什么是观察者模式:
“一旦发生改变,那么改变将会以某种形式送到观察者手上”。
“一系列对象之间一对多的关系,当一个对象改变了状态,其他依赖对象都会收到通知”。
1. 现实中的观察者模式
**
报纸的订阅,出版者为(Subject),订阅者为(Observe)。
微博,我们关注的人为Subject,我们自己为Observe。
UI界面上的按钮,Subject为按钮,Observe为监听按钮事件的各个方法。
2. 观察者模式的实现
Interface Subject {registerObserver(Observe *ob);removeObserver(Observe *ob);notifyOberver();}Interface Observe {update(Subject *subject);}
3. 优化点
推与拉的选择
- 默认情况下,一般都是推
- 数据量太大(Observer)过多,我们也可以采取拉
Observer接收数据
- 默认情况,Subject的所有数据Observer都要接收
- 也有一些情况,Observer可以不需要Subject的完整数据。
jdk中的观察者模式:java.util.Observable
