这是《Head First Design Pattern》里面介绍的第二个Pattern,叫做Observer Pattern,其核心概念就是一种一对多的关系。
其中的“一”,类似于定报纸系统的发送方,而“多”就是订阅方。当有新的“报纸”时,发送方将最新的报纸送达订阅方手中。发送方维护着一个订阅方的列表。
文中通过一个气象站的例子来解说这个模式。WeatherData实现Subject接口,里面包括所要传送的private 数据,还有注册Observer和去除Observer的方法。当数据有所更新时调用measurementChanged方法,这个方法再调用notifyObservers方法。
而在Observer那端,有一个subject对象的私有数据,通过构造函数将要注册的Subject作为参数来对它进行初始化,以此建立Observer和Subject的联系。
最后还介绍了java那建的Observer模式。通过继承Observable来成为Subject,通过实现Observer接口来成为Observer。但其有一定弊病,因为java不支持多继承,这就限制了使用这个模式的灵活性。所以我觉得以后如果真的用到Observer模式还是自己编程比较好。