1. 定义
The Observer Pattern defines a one-to-many dependency between objects so that when one object changes state, all of its dependents are notified and updated automatically. (观察者模式定义了对象间的一种一对多依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新)
2. 类图及描述
3. 应用场景及优缺点
观察者模式的应用场景:
(1) 对一个对象状态的更新,需要其他对象同步更新,而且其他对象的数量动态可变。
(2) 对象仅需要将自己的更新通知给其他对象而不需要知道其他对象的细节。
观察者模式的优点:
(1) Subject和Observer之间是松偶合的,分别可以各自独立改变。
(2) Subject在发送广播通知的时候,无须指定具体的Observer,Observer可以自己决定是否要订阅Subject的通知。
(3) 遵守大部分GRASP原则和常用设计原则,高内聚、低偶合。
观察者模式的缺陷:
(1) 松偶合导致代码关系不明显,有时可能难以理解。
(2) 如果一个Subject被大量Observer订阅的话,在广播通知的时候可能会有效率问题。(毕竟只是简单的遍历)