观察者(Observer)
介绍
当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知依赖它的对象。观察者模式属于行为型模式。
Intent
定义对象之间的一对多依赖,当一个对象状态改变时,它的所有依赖都会收到通知并且自动更新状态。
主题(Subject)是被观察的对象,而其所有依赖者(Observer)称为观察者。

Class Diagram
主题(Subject)具有注册和移除观察者、并通知所有观察者的功能,主题是通过维护一张观察者列表来实现这些操作的。
观察者(Observer)的注册功能需要调用主题的 registerObserver() 方法。

Implementation
天气数据布告板会在天气信息发生改变时更新其内容,布告板有多个,并且在将来会继续增加。

1 | public interface Subject { |
1 | public class WeatherData implements Subject { |
1 | public interface Observer { |
1 | public class StatisticsDisplay implements Observer { |
1 | public class CurrentConditionsDisplay implements Observer { |
1 | public class WeatherStation { |
1 | CurrentConditionsDisplay.update: 0.0 0.0 0.0 |