Observer模式:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知并自动更新。
这个模式又称依赖或发布-订阅。
Observer模式:关键特征
意图:在对象之间定义一种一对多的依赖关系,这样当一个对象的状态改变时,所有依赖者都将得到通知并自动更新。
问题:当某个时间发生时,需要向一系列变化着的对象发出通知。
解决方案:Observer将监视某个事件的责任委托给中心对象:Subject。
参与者与协作者:Subject知道自己的Observer,因为Observer要向它注册。Subject必须在所监视的事件发生时通知Observer。Observer负责向Subject注册,以及在得到通知时从Subject处获取信息。
效果:如果某些Observer只对事件的一个子集感兴趣,那么Subject可能会告诉它们不需要知道的事件。如果Subject通知Observer,Observer还返回请求更多的信息,则可能需要额外的通信。
实现:让某个事件发生时需要知道的对象将自己注册到另一监视事件发生或自己出发事件的对象上。事件发生时,Subject告诉Observer事件已经发生。为了对所有Observer类型的对象实现Observer接口,有时候需要使用Adapter模式。