模板方法模式
关键:父类定义骨架,子类回调父类方法
通过继承的方式,来实现父类步骤延申到子类实现,从而来实现以父类算法骨架的不同算法。
使用频率:⭐️⭐️⭐️⭐️⭐️
策略模式
关键:算法替换
将算法实现提取为接口,通过不同算法实现来对算法进行切换,且彼此独立,封装性强。
使用频率:⭐️⭐️⭐️⭐️⭐️
命令模式
关键:参数对象化,命令管理
将调用者和实现者请求参数化成命令对象,通过对命令对象的管理和调用,来灵活的对请求进行处理。在游戏开发中十分常见。
使用频率:⭐️⭐️⭐️⭐️
责任链模式
关键:一对多,请求沿链传递
将多个处理者串成链状,使得客户端无需区分处理者对象,将请求沿处理链传递,直至有对象进行处理。
使用频率:⭐️⭐️⭐️
状态模式
关键:状态分离
将负责的逻辑判断分到各个状态中完成,通过内部状态改变,从而改变状态行为。这个模式与有限状态机十分密切。
使用频率:⭐️⭐️⭐️⭐️⭐️
观察者模式
关键:一对多,动态订阅
观察者模式对订阅事件的对象,可以进行及时的通知,且这样的订阅是以动态的方式。它降低了订阅和被订阅对象耦合的关系。在实际开发中非常常用。
使用频率:⭐️⭐️⭐️⭐️⭐️
中介者模式
关键:星状连接,独立交互
通过中介者类来进行对各个对象的交互管理,使得各个对象相互独立,不在大量依赖各种对象,而是跟中介者交互,简化了交互的复杂性,降低耦合。
使用频率:⭐️⭐️⭐️
迭代器模式
关键:集合遍历
通过迭代器来遍历集合,不仅把集合复杂的遍历过程抽离出来,还可以只通过迭代器来对集合进行交互。对于一些复杂的树,也可以通过切换迭代器来切换遍历方式。
使用频率:⭐️⭐️⭐️⭐️⭐️
访问者模式
关键:扩展方法
通过双分派的操作,完成访问者访问各个具体数据类型,从而实现扩展方法。但由于访问者模式不允许访问的数据类型添加新的类型,否则访问者将进行大量修改。使得该方法不常用。
使用频率:⭐️⭐️
备忘录模式
关键:快照(保存状态)
通过双接口形式,实现不同对象间的访问权限不同,使得可以保存对象的快照,且不用担心其他对象的修改和使用。但由于备忘录模式的快照,可以使用其他技术来完成,如序列化等,且更为直观简单,所以并不常用。
使用频率:⭐️⭐️