1. 设计模式
使用设计模式的目的是为了解决问题, 致力于找到最能解决问题的简单方案, 不要让模式影响设计的决策.
学习设计模式时需要了解每个设计模块使用的对象的属性与行为.
设计模式可以划分为 3 类:
1.1. 创建型
各种创建对象的方式.
1.2. 结构型
为了保持原有类型结构不变, 或者为了实现特定的类型结构.
1.3. 行为型
为了实现特定的交互方式.
2. 区别
2.1. 策略模式 vs 状态模式
都是行为型设计模式
状态模式用于解决状态转移的问题, 当状态发生转移了, 那么对象就会改变它的行为;
策略模式用于封装一组可以互相替代的算法族, 并且可以根据需要动态地去替换使用的算法.
3. 代理模式 vs 访问者模式 vs 中介模式
代理模式是结构型设计模式, 用于需要控制对象访问的情况;
访问者模式是行为型设计模式, 将数据的结构与操作相分离, 用于数据结构文档, 但操作复杂多变的情况.
中介模式也是是行为型设计模式, 通过一个公共对象来维护多个对象之间的关系, 降低系统耦合.
4. 工厂方法模式 vs 抽象工厂模式 vs 享元模式
工厂方法模式是创建型设计模式, 用于创建相同抽象类型, 且创建过程比较复杂的情况;
抽象工厂模式也是创建型设计模式, 用于创建对象家族, 模式中使用到了工厂方法模式;
享元模式是结构型设计模式, 通过工厂模式创建对象, 并将他们缓存起来, 防止重复创建.
5. 适配器模式 vs 桥接模式 vs 外观模式
都是结构型设计模式
适配器模式用于将接口转换成另一种需要的接口;
桥接模式将抽象部分与实现部分分离, 使它们可以独立变换, 也就是通过组合代替继承, 防止继承带来类爆炸.
外观模式将多个不同功能的接口再次抽离出需要的功能, 隔离系统内部的复杂性, 让使用更加简单.
6. 责任链模式 vs 观察者模式
都是行为型设计模式, 都是将发送者与接受者解耦.
责任链模式将请求转发给责任链, 寻找合适的接受对象处理.
观察者模式将请求转发给所有接受者.
7. Resource
- 设计模式 – 可复用面向对象软件的基础
- Design Patterns
- OODesign
- https://blog.csdn.net/u010144805/article/details/82414945
- https://www.runoob.com/design-pattern/design-pattern-tutorial.html
- https://www.cnblogs.com/zytrue/p/8484806.html
- http://blog.sina.com.cn/s/blog_573860a90100o4k0.html
- https://www.cnblogs.com/beijiguangyong/archive/2010/11/15/2302807.html