什么是观察者模式:
“一旦发生改变,那么改变将会以某种形式送到观察者手上”。
“一系列对象之间一对多的关系,当一个对象改变了状态,其他依赖对象都会收到通知”。

1. 现实中的观察者模式

**
报纸的订阅,出版者为(Subject),订阅者为(Observe)。
微博,我们关注的人为Subject,我们自己为Observe。
UI界面上的按钮,Subject为按钮,Observe为监听按钮事件的各个方法。

2. 观察者模式的实现

  1. Interface Subject {
  2. registerObserver(Observe *ob);
  3. removeObserver(Observe *ob);
  4. notifyOberver();
  5. }
  6. Interface Observe {
  7. update(Subject *subject);
  8. }

3. 优化点

  • 推与拉的选择

    • 默认情况下,一般都是推
    • 数据量太大(Observer)过多,我们也可以采取拉
  • Observer接收数据

    • 默认情况,Subject的所有数据Observer都要接收
    • 也有一些情况,Observer可以不需要Subject的完整数据。

jdk中的观察者模式:java.util.Observable