设计模式分类
设计模式总共有 23 种,总体来说可以分为三大类:创建型模式( Creational Patterns )、结构型模式( Structural Patterns )和行为型模式( Behavioral Patterns )。
- 创建型设计模式:关注对象的创建
- 结构型设计模式:关注类与类之间的关系
- 行为型设计模式:关注对象和行为的分离
分类 | 关注点 | 包含 |
---|---|---|
创建型模式 | 关注于对象的创建,同时隐藏创建逻辑 | 工厂模式、抽象工厂模式、单例模式、建造者模式、原型模式 |
结构型模式 | 关注类和对象之间的组合 | 适配器模式、过滤器模式、装饰模式、享元模式、代理模式、外观模式、组合模式、桥接模式 |
行为型模式 | 关注对象之间的通信 | 责任链模式、命令模式、中介者模式、观察者模式、状态模式、策略模式、模板模式、空对象模式、备忘录模式、迭代器模式、解释器模式、访问者模式 |
创建型设计模式
创建型设计模式关注对象的创建,就是把创建对象的代码转移了,对于转移的方法不同来区别这几种设计模式,例如:单例是把创建对象限制在类内部,使其他地方无法创建,原型是通过对象复制来创建对象,工厂是把创建对象放到工厂类
- 单例模式:就是限制了对象的创建,重用了对象
- 原型模式:换个方式创建对象,不走构造函数,而是内存拷贝
- 简单工厂:不直接new,把对象创建转移到工厂类(简单工厂不属于23种设计模式)
- 工厂方法:屏蔽对象的创建;留下了扩展空间;
- 抽象工厂:屏蔽对象的创建;约束强制保障产品簇;
- 建造者模式:复杂的工厂方法
结构型设计模式
结构型设计模式关注类与类之间的关系
- 纵向关系:继承≈≈实现 超强关联
- 横向关系:>组合>聚合>关联>依赖
组合优于继承,结构型设计模式的核心,用组合封装一层,然后加功能,对于解决的问题的侧重点不一样区别这几种设计模式,例如:同样是对一个新的功能类进行封装,但适配器模式重于让功能类适配已有的接口,保持接口对外一致性,而代理模式则重于对功能类的功能扩展
- 适配器模式:解决重构的问题,新东西和旧系统不吻合,通过继承/组合进行适配
- 代理模式:通过代理完成对业务类的访问,包一层方便任意功能扩展
- 装饰器模式:通过组合+继承,完成对象功能动态扩展
行为型设计模式
行为型设计模式关注对象和行为的分离,把不稳定的地方移出去,能保证自身的稳定,就是把有变化的部分以传参的方式传进来。