观察者模式又名发布-订阅者模式,它定义了对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知,自动刷新状态。
观察者模式提供给关联对象一种同步通信的手段,使某个对象与依赖它的其他对象之间保持状态同步。
角色:
- 观察者(订阅者)
接口或抽象类。当被观察者状态发生变化时,会得到通知 - 被观察者(发布者 或者 主题)
当需要被观察的状态发生改变时,需要通知队列中的所有观察者对象。
需要维持(添加,删除,通知)一个观察者对象列表
观察者模式案例
步骤:
1. 提供一个发布者(负责信息发布)
2. 提供观察者(信息发布后需要采取行动的对象)
3. 注册观察者(将观察者注册到发布者的客户列表)
4. 发布者发布信息(事件触发)
场景:女神Rose(发布者)、追求者Jack(观察者)、追求者Tom(观察者)
结构:多个发布者,多个观察者,发布者同时是观察者,观察者同时是发布者