Observer Pattern (观察者模式)
定义:
《设计模式》中对Observer模式的意图是这样描述的:“定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知并且自动更新”。
The Observer Pattern defines a one-to-many relationship between a set of objects. When the state of one objects changes, all of its dependents are notified.
这个模式就好像是,报纸的发行方和报纸的订购者的关系,如下:
Publishers + Subscribers = Observer Pattern
上图中:
1. 用户1,2,3订阅了报社的报纸;
2. 报社出版新报纸后,就会给用户1,2,3邮寄新的报纸;
3. 用户3取消了报纸订购业务;
4. 报社出版新的报纸之后,依旧给用户1,2邮寄新的报纸,不会给用户3再寄报纸;
理解了publisher 和 subscribers之后,理解监听者模式就不难了。只是我们在Observer模式中,两者分别叫做 SUBJECT 和 OBSERVERS, 如下:
SUBJECT + OBSERVERS = Observer Pattern.
UML 图如下: