什么是观察者设计模式

定义对象间的一对多的依赖关系,观察者依赖目标
当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新
一: 目标
多: 订阅者(观察者)
image.png

优缺点

  1. 观察者模式在观察目标和观察者之间建立一个抽象的耦合。观察者对象只需要维持一个抽象观察者的集合,无需了解其具体观察者。
  2. 观察者模式支持广播通信,观察目标会向所有已注册的观察者发送通知,降低了一对多系统的设计难度。
  3. 观察者模式满足开闭原则的要求,增加新的具体观察者无须修改原有的系统代码。

使用场景

实现的两种方式

拉模型:
场景: 全部推送,观察者自己取用
观察者主动向目标对象拉取,通过 update 方法传递整个目标对象

推模型:
场景: 目标对象知道观察者需要什么数据
目标对象主动向观察者推送部分或全部目标信息(广播)

实现

jdk 自带

java.util.Observable

自己实现

(为了不浪费空间,引用其他博客) 代码