观察者模式
介绍
观察者模式:对象之间一对多依赖的一种设计方案,一通知多发生变化
订购羊奶,羊奶提供商是一,顾客是多,把羊奶送达到的投放箱中就是通知
优点:
- 观察者以集合的方式管理用户(Observer)
- 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
缺点:
- 如果一个被观察者对象有很多的观察者的话,将所有的观察者都通知到会花费很多时间
- 如果在观察者和观察目标之间有循环依赖的话,观察目标会触发它们之间进行循环调用,可能导致系统崩溃
- 观察者模式没有相应的机制让观察者知道所观察的目标对象是怎么发生变化的,而仅仅只是知道观察目标发生了变化。
原理和角色
被依赖的对象为Subject,依赖的对象为Observer,Subject通知Observer变化(一对多关系中,一通知多变化)
Subject:注册、移除和通知
应用
Observable类
java.util.Observable实现了Subject的各种方法,其中聚合了一个Vector<Observer>
的对象,因此Observable属于被观察者。Observer就是观察者模式中的观察者
不同的是Observable类没有实现Subject接口