前言: OO精神–可维护性、可扩展性、可复用性、灵活性好。
OO基础:
- 对象:是一个自包含的实体,用一组可识别的特性和行为来标识。(比如herry 就是一个对象,因为看得见摸得着)
- 类:具有相同属性和功能的对象的抽象的集合。(男人女人都属于人类,)
- 实例:就是一个真实的对象,用new关键字来创建;实例化就是创建对象的过程。
- 接口:把隐式公共方法和属性组合起来,以封装特定功能的一个集合。一旦类实现了接口,类就可以支持接口所指定的所有属性和成员。(比如动物有猫、狗、侯、猪;然后孙悟空接口就是猴,猪八戒就是猪。)
OO基础方法:
- 构造方法:对类进行初始化。构造方法与类同名,无返回值,不需要void,在new时候调用。
private string name;
public User(string name)
{
this.name = name;
}
- 方法重载:提供了创建同名的多个方法的能力,但这些方法需使用不同的参数类型。(在原犯法基础上增加功能,同名参数不同而已。)
- -
OO三特特性:
- 封装:每个对象都包含它能进行操作所需要的所有信息 ;这个方法和属性都包含在类中,通过类的实例化来实现。
- 继承:定义了类如何相互关联,共享特性。继承的工作方式:定义父类和子类(基类、派生类),其中子类继承父类的所有特性,并且可以定义新的特性。
- 多态:表示不同的对象可以执行相同的操作,但要通过它们自己的实现代码来执行。(猫和狗都可以叫,但是叫出的声音不一样,他们同样是使用了叫声方法)
创建型模式:工厂方法-建造者-原型-抽象工厂-单例
why: 因为他们都从属于创建自己地方法通过接口来实现。创建型模式抽象了实例化的过程。他们帮助一个系统独立于如何创建、组合和表示它的那些对象;并且都回将关于该系统使用哪些具体的类信息封装起来;最最重要一点就是灵活性好。例如一下:
抽象工厂:通过继承给定的接口,我们直接实例化即可。
建造者:适用于产品和部件之间的关系,不同的产品之间不同的部件。
工厂方法:针对每一种产品提供一个工厂类,通过不同的工厂实例来创建不同的产品实例,在同一等级结构中,支持增加任意产品。
原型: 用于克隆接口,先抽象一个类,然后设置具体原型类(继承),并且由于值类型和引用类型,所以有了深浅复制。
单例:提倡简洁美,就是一个类有一个实例,但是都可以访问,把实例化类保护起来。
结构型模式:外观-装饰-代理-组合-桥接-享元
why:以下都是不同的模式或者给定的结构,让我们去选择使用不同的环境,基本都突出利用接口来进行不同的工作。
适配器:让原本接口不兼容的一起工作。(比如我们听不懂外语就需要一个翻译)客户可以统一调用统一接口更加简洁、有效。
桥接:利用聚合-复用原则,将抽象部分与现实分离,都可以独立变化:如同不同型号手机使用不同软件,将手机品牌归为一类实例化,软件归为一类实例化,在进行组合。
组合:利用树形结构表示:整体-部分层次结构,为了具有一致性:适用于公司又有分公司,各个公司之间有各个部门。
装饰:同生成子类类似,是对对象增加新的职责:比如穿衣服,随着时代更新我们穿的衣服种类原来越多,所以需要不断更新。
外观:类似于装饰,减少依赖,但是不是用继承,而是定义类似相同的类并统一接口:比如我们去菜市场,会有不同的商家,但是都是卖菜的。同一个菜市场下辖不同的卖菜商家。
享元:就是共享技术,比如我们各大网站需要展示相同的会展,但是每个地方不同,所有我就用享元模式共享其功能。
代理:顾名思义:建立公用接口,然后让他们代替:比如你想追美女,但是买的东西让他们帮你送,最后成了人家的媳妇。
行为型模式(老板)
老板通过职责链去观察后给出了命令,并且根据大家不同状态去做相应的模板
行为型模式(员工 )
员工通过访问中介者找到了两大策略:备忘录和解释器
总结
如果想成为一名更优秀的软件设计师,了解优秀软件设计的演变过程比学习优秀设计本身更有价值,因为设计的演变过程中蕴藏着大智慧。通过这些模式让我感受到了封装的变化,对象之间的松散耦合,针对接口的编程,让我重新认识到了码农不仅仅是,更重要的就是米老师那句话:如果来到这里仅仅是学习技术的那就大错特错了,思想是知识的源泉。 学到了我们在设计中根据:易维护、易扩展、易复用、灵活性好的原则去努力。
本文介绍了面向对象(OO)的基础概念,包括对象、类、实例、接口等,并详细阐述了OO的三大特性:封装、继承和多态。此外,还探讨了创建型模式和结构型模式的应用场景与优点。
453





