对比
相似对比
观察者 vs 发布订阅 vs 中介者
观察者模式
直接订阅目标事件,在目标发出内容改变的事件后,直接接收事件并作出响应。
发布订阅
发布者和订阅者之间多了一个调度中心。调度中心一方面从发布者接收事件,另一方面向订阅者发布事件,订阅者需要在调度中心中订阅事件。
中介者模式
多个对象通过一个中介者进行交流,而不是直接进行交流,这样能够将通信的各个对象解耦。
装饰器 vs 代理
装饰器
在不改变对象自身的基础上,在程序运行期间给对象动态地添加职责。
是增强,是辅助,目标仍然可以自行对外提供服务,装饰器只起增强作用。
代理
为一个对象提供一个代用品或占位符,以便控制对它的访问,可以改变原始对象行为。
是全权代理,目标根本不对外,全部由代理类来完成。
策略 vs 状态
策略模式
各个策略类之间是平等而又平行的,它们之间没有任何联系,所以客户必须熟知这些策略类的作用,以便客户可以随时主动切换算法。
状态模式
状态和状态对应的行为是早已被封装好的,状态之间的切换早被规定完成,“改变行为”这件事情发生在状态模式内部,客户不需要了解这些细节。
功能
表单验证
- 策略模式
- 代理模式
- 装饰器模式
参考
Function 的 before & after
- 装饰器模式
- 职责链模式