设计模式很重要,估计会考
6.1 设计原则
面向对象设计原则
单一职责原则
开闭原则
里氏代换原则
依赖倒转原则
接口隔离原则
合成复用原则
- 继承复用: 实现简单,已与拓展。破坏系统的封装性,从基类继承而来的实现是静态的。
- 组合聚合复用:耦合度低,选择性嗲用陈冠对象操作,可以在运行时动态进行。一个类变换对另一个类的影响小。
迪米特法则
- 迪米特法则就是指一个软件实体应当尽可能少的与其他实体发生相互作用。这样,当一个模块修改时,就会尽量少的影响其他的模块,扩展会相对容易,这是对软件实体之间通信的限制,它要求限制软件实体之间通信的宽度和深度
- 侠义的迪米特法则:如果两个类之间不必彼此直接通信,那么这两个类就不应当发生直接的相互作用,如果其中的一个类需要调用另一个类的某一个方法的话,可以通过第三者转发这个调用
- 可以降低类之间的耦合,但是会怎见大量的小方法,也会使系统的不同模块之间的通信效率降低
广义的迪米特法则:指对对象之间的信息流量、流向以及信息的影响的控制,主要是对信息隐藏的控制,private public
6.3 面向对象设计模式
设计模式时成熟的代码设计经验总结。为了代码复用,增加可维护性。
三大类型:
- 创建型模式
- 结构性模式
- 行为型模式
创建型设计模式
用创建对象的模式,抽象实例化过程
-
单实例模式:保证一个类有且只有一个实例,提供一个全局访问点
-
建造者模式 (Builder):将复杂对象的构建与它的表示分离,同样的构建过程可以创建不同的表示。允许用户可以只通过指定复杂对象的类型和内容就可以构建它们,用户不知道内部的具体构建细节
-
原型模式 (Prototype):通过“复制”一个已经存在的实例来返回新的实例,而不是新建实例。被复制的实例就是我们所称的“原型”,这个原型是可定制的。原型模式多用于创建复杂的或者耗时的实例,因为这种情况下,复制一个已经存在的实例使程序运行更高效;或者创建值相等,只是命名不一样的同类数据
结构型设计模式
结构型模式讨论的是类和对象的结构,它采用继承机制来组合接口或实现(类结构型模式),或者通过组合一些对象,从而实现新的功能(对象结构型模式)
行为型设计模式
着力解决的是类实体之间的通讯关系,希望以面向对象的方式描述一个控制流程
观察者模式
建立一种对象与对象之间的依赖关系,一个对象发生改变时将自动通知其他对象,其他对象将相应做出反应。在此,发生改变的对象称为观察目标,而被通知的对象称为观察者,一个观察目标可以对应多个观察者,而且这些观察者之间没有相互联系,可以根据需要增加和删除观察者,使得系统更易于扩展,这就是观察者模式的模式动机
- 定义对象间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆得到通知并被自动更新。观察者模式又叫做发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-监听器(Source/Listener)模式或从属者(Dependents)模式