1 定义
定义对象间的一种一对多(变化)的依赖关系,以便当一个对象(Subject)的状态发生变化的时候,所有依赖它的对象都得到通知并自动更新.
2 本质与要点
本质:触发联动
要点:
- 1 观察者模式使得我们可以独立改变目标和观察者,二者关系松耦合
- 2 观察者自己决定是否订阅通知,目标对象并不关注谁订阅了
- 3 观察者不依赖通知顺序,目标对象也不需要
- 4 常用于基于事件的ui框架中,也是mvc组成部分
- 5 常用在分布式系统,actor框架中
3 类图
4 优缺点
- 优点:
- 1 观察者和被观察者是抽象耦合的
- 2 建立一套触发机制
- 缺点:
- 1 如果一个被观察者对象有很多直接和间接的观察者,将所有的观察者都通知会花事件
- 2 如果观察者和观察目标之间有循环依赖的话,观察目标会触发他们之间进行循环调用>,会产生死循环
- 3 只能让观察者知道目标发生了变化,不知道是怎么发生变化的。