观察者模式的定义是:
提供一个接口用于创建一系列相关或依赖的对象,而不需要指定具体的类。
其UML类图的示例如下:
在这个模式中,参与者包括:
- Subject,
- 知道其观察者。任意数量的Observer对象可以观察一个subject。
- 提供一个接口用于附加和分享Observer对象。
- ConcreteSubject:
- stores state of interest to ConcreteObserver
- 当状态改变时发送通知给其观察者。
- Observer:定义一个更新接口用于那些需要被通知的对象。
- ConcreteObserver:
- 维护一个到ConcreteSubject的引用。
- 保存那个应该与subject的一致的对象的状态。
- 实现Observer的更新接口,保持其状态与subject的一致。