這是《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模式還是自己編程比較好。