定义
- 定义一种一对多的依赖关系,使得每当被观察者状态改变时,则所有依赖它的对象都会得到通知并被自动更新
应用场景
- 其他一个对象或多个对象依赖于另一个对象的变化
- 实现类似广播机制,无需知道收听者,只需广播,刚兴趣的对象会接收该广播
- 跨系统的消息交换场景
类图
- jdk中已有观察者的工具类 java.util.Observable、java.util.Observer相当于类图中的Subject和IObserver
- 真实运用,一般会做一定变化,来配合观察者和被观察者关系
优缺点
- 优点
- 观察者与被观察者之间是松耦合的
- 建立了一套触发机制
- 实现了一对多的通讯机制
- 缺点
- 如果观察者数量过多,事件通知较长
- 如果观察者和被观察者存在循环依赖,会导致循环依赖,导致循环依赖