设计模式的一点概括

2019 / 11 / 27

结构型模式一句话概括

结构型模式都没有改变原来的实现,通过生成新的类组合旧的类来实现扩展。

  1. 代理模式: 组合实现类,和实现类一样的接口,实现类负责核心算法,代理负责一些辅助控制功能
  2. 适配器模式: 组合实现类,但是适配新的接口
  3. 桥接模式: 将两个接口实现类合并到一起,一个组合另一个,将两个抽象纬度组合在一起。
  4. 装饰模式: 装饰类和实现类一样的接口,在同方法或者添加新方法进行旧接口扩展
  5. 外观模式: 一个外观类统一调用多个实现类,一个接口调用多个接口
  6. 享元模式: 一个类的有部分属性可以共享的时候,不用重复new新对象,可以用一个map享元池共享对象,然后只改变外部属性。
  7. 组合模式: 整体类和个体类实现同样的接口,整体类用集合保存个体类,计算整体的时候遍历所有个体类依次计算,可以做到类似树结构的递归遍历

行为模式

关注运行时的流程控制

  1. 模版方法: 父类实现主逻辑骨架,但差异化的代码实现定义为抽象方法由子类实现
  2. 策略模式: 主类中定义策略类对象,然后通过组合传入不同的策略类的实现而达到不同的逻辑
  3. 命令模式: 命令也是一种策略,只不过这种命令关联了一个接受者,由接受者去实现策略而不是命令本身自己实现
  4. 责任链 : 类似link模式,一个接口关联下一个接口。从头到尾执行下去。(将任务拆分成多个步骤,每个链路只关注一个)
  5. 状态模式: 要对对象的多种状态进行不同的操作的时候,用这个模式,一个对象组合不同的状态队形,执行的时候调用状态对象执行(认识还不是很清晰)
  6. 观察者模式: 被观察者对象里面存一个list给观察者接口,被观察者调用需要关注的方法的时候,调用通知方法,通知所有观察者
  7. 中介者模式: 中介对象一对多组合普通对象,普通对象又一对一持有中介对象。普通对象调用中介接口方法的时候,中介接口转发给所有加入者,中介模式和观察者模式,就是触发事件的对象不同而已。
  8. 迭代器模式: 将对象里面的集合的遍历方法抽取出来,单一职责原则。
  9. 访问者模式: 集合对象中存在多种不同的元素,且每种元素也存在多种不同的访问者和处理方式,这种情况用。(认识还不够)
  10. 备忘录模式: 原对象把需要备份的属性提取到备忘录对象,由管理者对象持有备忘录对象,原对象要恢复的时候向管理者询问对象。(认识还不够)
  11. 解释器模式: 用来解释文本的,定义终结符类存储主体,非终结符类计算主体,由环境类统一调度。(认识还不够)

创建型模式

将对象的创建与使用分离

  1. 单例模式: 通过私有化构造函数,同时只存在一个单例对象,节省内存
  2. 原型模式: 通过实现Cloneable接口,用已经存在的对象,快速复制对象
  3. 工厂方法模式: 由工厂统一创建单个对象
  4. 抽象工厂模式: 用来创建一组对象
  5. 建造者模式: 将对象创建需要设置的属性一个个去设置