再看设计模式

设计模式分为三大类:

https://www.runoob.com/design-pattern/design-pattern-tutorial.html

创建型模式,共五种:

  1. 工厂方法模式
  2. 抽象工厂模式
  3. 单例模式
  4. 建造者模式
  5. 原型模式

结构型模式,共七种:

  1. 适配器模式
  2. 装饰者模式
  3. 代理模式
  4. 外观模式
  5. 桥接模式
  6. 组合模式
  7. 享元模式。

行为型模式,共十一种:

  1. 策略模式
  2. 模板方法模式
  3. 观察者模式
  4. 迭代子模式
  5. 责任链模式
  6. 命令模式
  7. 备忘录模式
  8. 状态模式
  9. 访问者模式
  10. 中介者模式
  11. 解释器模式。

桥接模式(Bridge)

案例:3D绘图工具,具体图形与绘图引擎的故事

  1. 方案一:
    再看设计模式
  2. 最佳方案
    再看设计模式

代理模式(Proxy)

  1. 远程代理
    常见于网页浏览器中代理服务器的设置。代理服务器是用来暂存其他不同地址上的网页服务器内容。
  2. 虚拟代理
    可以作为“延后加载”功能的实现,让资源可以在真正要使用时,才进行加载操作,在其他情况下都只是虚拟代理所呈现的一个“假象”。
  3. 保护代理
    代理者有职权可以控制是否要真正取用原始对象的资源。
  4. 智能引用
    主要用于强化C/C++语言对于指针控制的功能,减少内存遗失和空指针等问题。

保护代理

再看设计模式

装饰模式(Decorator)与代理模式

再看设计模式

  1. 代理模式,会知道代理的对象时哪个子类,并拥有该子类对象。装饰模式则拥有父类对象(被装饰对象)的引用
  2. 代理模式,会按“职权”来决定是不是需要将需求转给原始类,所以代理模式有选择要不要执行原油功能的权利。
  3. 装饰模式,是一个“增加”的操作,必须在原始类被调用的之前或之后,再按照自己的职权“增加”原始类没有的功能。

适配器模式(Adapter)与代理模式

再看设计模式

  1. 代理类与原始类同属一个父类,所以客户端不需要做任何变动,只需决定是否要采用代理者。
  2. 适配器的Adapter中的Adaptee类及Target类则分属不同的类群组,着重在于“不同实现的转换”。

中介者模式(Mediator)

做调度中心或分发中心