一、定义
定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。
通俗理解:
观察者模式的核心是:出版社(object)+订阅者(observer),可以想象为报纸订阅类设计。
subject的interface:
<<interface>> Subject: registerObserver() removeObserver() notifyObserver()
observer的interface:
<<interface>> Observer: update()
二、原则
- 讲交互对象设计为松耦合。建立弹性OO系统,应对变换,将对象间相互依赖降到最低。
三、问题
1、一个主题(object)和多个观察者(observer)有什么关联?
答案:object具有某些数据,但是observer要使用这些数据,但数据不属于observer。observer需要依赖subject告诉observer使用‘改变了’的数据。
2、subject与observer依赖如何产生?
答案:subject真正拥有数据,observer是subject的依赖者。当数据更新时,比让多个对象控制同一个数据,更加OO。
四、代码