什么是观察者设计模式
定义对象间的一对多的依赖关系,观察者依赖目标
当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新
一: 目标
多: 订阅者(观察者)
优缺点
- 观察者模式在观察目标和观察者之间建立一个抽象的耦合。观察者对象只需要维持一个抽象观察者的集合,无需了解其具体观察者。
- 观察者模式支持广播通信,观察目标会向所有已注册的观察者发送通知,降低了一对多系统的设计难度。
- 观察者模式满足开闭原则的要求,增加新的具体观察者无须修改原有的系统代码。
使用场景
实现的两种方式
拉模型:
场景: 全部推送,观察者自己取用
观察者主动向目标对象拉取,通过 update 方法传递整个目标对象
推模型:
场景: 目标对象知道观察者需要什么数据
目标对象主动向观察者推送部分或全部目标信息(广播)
实现
jdk 自带
自己实现
(为了不浪费空间,引用其他博客) 代码