再看设计模式
设计模式分为三大类:
https://www.runoob.com/design-pattern/design-pattern-tutorial.html
创建型模式,共五种:
- 工厂方法模式
- 抽象工厂模式
- 单例模式
- 建造者模式
- 原型模式
结构型模式,共七种:
- 适配器模式
- 装饰者模式
- 代理模式
- 外观模式
- 桥接模式
- 组合模式
- 享元模式。
行为型模式,共十一种:
- 策略模式
- 模板方法模式
- 观察者模式
- 迭代子模式
- 责任链模式
- 命令模式
- 备忘录模式
- 状态模式
- 访问者模式
- 中介者模式
- 解释器模式。
桥接模式(Bridge)
案例:3D绘图工具,具体图形与绘图引擎的故事
- 方案一:
- 最佳方案
代理模式(Proxy)
- 远程代理
常见于网页浏览器中代理服务器的设置。代理服务器是用来暂存其他不同地址上的网页服务器内容。 - 虚拟代理
可以作为“延后加载”功能的实现,让资源可以在真正要使用时,才进行加载操作,在其他情况下都只是虚拟代理所呈现的一个“假象”。 - 保护代理
代理者有职权可以控制是否要真正取用原始对象的资源。 - 智能引用
主要用于强化C/C++语言对于指针控制的功能,减少内存遗失和空指针等问题。
保护代理
装饰模式(Decorator)与代理模式
- 代理模式,会知道代理的对象时哪个子类,并拥有该子类对象。装饰模式则拥有父类对象(被装饰对象)的引用
- 代理模式,会按“职权”来决定是不是需要将需求转给原始类,所以代理模式有选择要不要执行原油功能的权利。
- 装饰模式,是一个“增加”的操作,必须在原始类被调用的之前或之后,再按照自己的职权“增加”原始类没有的功能。
适配器模式(Adapter)与代理模式
- 代理类与原始类同属一个父类,所以客户端不需要做任何变动,只需决定是否要采用代理者。
- 适配器的Adapter中的Adaptee类及Target类则分属不同的类群组,着重在于“不同实现的转换”。
中介者模式(Mediator)
做调度中心或分发中心