1.分类
创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。
结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享
元模式。
行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令
模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式
2.单例模式\
3.设计原则
1.单一职责原则SRP
一个对象只包含单一原则,并且职责被完整封装在一个类中
对一个类,应该仅有一个引起他变化的原因
一个类的职责(数据属性和方法)越多,复用可能性越低,且越耦合
2.开闭原则OCP
一个实体应该对扩展开发,对修改关闭,在设计模块时,应该在这个模块在不被修改前提下被扩展。
抽象化是开闭原则的关键,需要找到系统的可变因素并封装起来
3.里氏替换LSP
所有引用父类的地方必须能透明的使用子类的对象
4.依赖倒转原则DIP
高层模块不应该依赖底层模块,他们都应该依赖抽象,抽象不依赖细节,细节依赖于抽象。
针对接口编程,而不是实现
举例:策略层依赖机制层,机制层依赖工具层
5.接口隔离原则LSP
客户端不应该依赖不需要的接口
一旦一个接口太大,需要把他分割成更小的接口,使用该接口的客户端只需要知道与之相关的方法即可
6.迪米特法则LOD
一个软件实体应该尽可能少的与其他实体发生作用。当一个模块修改时,尽量少的影响其他模块。
7.合成复用接口原则CRP
尽量使用对象组合,而不是继承来到达复用的目的。
8.总结
对于一个类的设计主要遵循单一原则,类的变化点要满足开闭原则。
对应类的关系,首先要遵守迪米特法则,尽量少的相互关系。
对于发生关系的,要遵守依赖倒置原则,需要依赖抽象。
如果有依赖关系,注意接口隔离原则。
如果有复用的需要,优先使用关联关系而不是继承。
如果继承,满足里氏替换关系。