设计模式根据功能功结构分类三大类
1、创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。
2、结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。
3、行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。
以下是各自的类图:
一、创建型模式
1、工厂方法模式
2、抽象工厂模式
3、单例模式
4、建造者模式
5、原型模式
二、结构型模式
1、适配器模式
2、装饰器模式
3、代理模式
4、外观模式
5、桥接模式
6、组合模式
7、享元模式
三、行为型模式
1、策略模式
2、模板方法模式
3、观察者模式
4、迭代子模式
5、责任链模式
6、命令模式
7、备忘录模式
8、状态模式
9、访问者模式
10、中介者模式
11、解释器模式
四、总结
1、设计原则
1)开闭原则(Open Close Principle)
对修改关闭,对扩展开放。通过组合、继承、适配、装饰、克隆等方法来为原对象添加功能或修改功能
2)里氏代换原则(Liskov Substitution Principle)
任何基类可以出现的地方,子类一定可以出现
3)依赖倒转原则(Dependence Inversion Principle)
对接口编程,依赖于抽象而不依赖于具体
4)接口隔离原则(Interface Segregation Principle)
使用多个隔离的接口,比使用单个接口要好
5)迪米特法则(最少知道原则)(Demeter Principle)
一个实体应当尽量少的与其他实体之间发生相互作用,使得系统功能模块相对独立
6)合成复用原则(Composite Reuse Principle)
尽量使用合成/聚合的方式,而不是使用继承
2、模式类图可能是相似的,但其实里面的关系内涵并不一样。例如装饰模式与代理模式,一个是为了添加功能,一个是为了限制原功能的使用。所以在实际实用过程中要注意对象的命名和从模式的内涵出发,选用合适的模式。
3、在面向对象的世界里,结构并不能揭示关系,关系是通过特定的关键字与其内在联系来决定的,这就像两对并行走的人,年龄、身高都一样。但它们的关系不一样,一对是父子,一对是朋友。