1. 程式人生 > >天氣預報項目中的觀察者模式

天氣預報項目中的觀察者模式

.com 技術分享 https 需要 get http 兩個 將他 sign

該項目的應用場景是:

  氣象局需要我們構建一套系統,這系統有兩個公告牌,分別用於顯示當前的實時天氣和未來幾天的天氣預報。當氣象局發布新的天氣數據後,兩個公告牌上顯示的天氣數據必須實時更新。氣象局同時要求我們保證程序擁有足夠的可擴展性,因為後期隨時可能要新增新的公告牌。

原理:

  技術分享圖片

  我們用WeatherDate實現了主題接口,兩個公告牌 CurrentConditionsDisplay和ForcastDisplay實現了Observer和DisplayElement接口,在他們的構造方法中會調用WeatherData中的registerObserver()方法把自己註冊成觀察者,並將他們保存到一個集合中。當被觀察者也就是WeatherData數據變化時,會調用notifyObserver()方法通知觀察者,也就是兩個公告牌,並調用 Updata()方法來更新 自己的數據。

該模式的優點:

  1.將觀察者(公告牌)和被觀察者(氣象局)徹底解耦,被觀察者只知道觀察者列表的抽象接口,被觀察者不知道具體的觀察者。

  2.被觀察者發送通知,所有註冊的觀察者都會收到信息,可以實現廣播機制。

 

最後附上程序的源碼地址:https://github.com/BaronZ88/DesignPatterns/tree/master/src/com/baron/patterns/observer

天氣預報項目中的觀察者模式