觀察者模式 觸發聯動
當一個抽象模型有兩個方面,其中一個方面的操作依賴于另一個方面的狀態變化
如果在更改一個對象的時候,需要同時連帶改變其他的對象,而且不知道究竟應該 有多少對象需要被連帶改變
當一個對象必須通知其他的對象,但是你又希望這個對象和其他的被通知的對象是松散耦合的
當一個抽象模型有兩個方面,其中一個方面的操作依賴于另一個方面的狀態變化
如果在更改一個對象的時候,需要同時連帶改變其他的對象,而且不知道究竟應該 有多少對象需要被連帶改變
當一個對象必須通知其他的對象,但是你又希望這個對象和其他的被通知的對象是松散耦合的
2015-06-22
命名建議
目標接口 Subject
觀察者接口 Observer
觀察者接口的更新方法 update
觸發通知的時機先改數據后通知
觀察者模式調用順序 準備階段1創建目標對象2創建觀察者對象3相目標對象注冊觀察者對象
運行階段1改變目標對象的狀態1.1通知所有注冊地觀察者對象進行相應的處理1.1.1回調目標對象,獲取相應數據
通知的順序 觀察之間是平行的
目標接口 Subject
觀察者接口 Observer
觀察者接口的更新方法 update
觸發通知的時機先改數據后通知
觀察者模式調用順序 準備階段1創建目標對象2創建觀察者對象3相目標對象注冊觀察者對象
運行階段1改變目標對象的狀態1.1通知所有注冊地觀察者對象進行相應的處理1.1.1回調目標對象,獲取相應數據
通知的順序 觀察之間是平行的
2015-06-22
@Wi 如果像你說的對每個天氣內容作為一個訂閱者的話,那這樣的設計會不會使得訂閱者太多,造成結構的復雜性值得考慮
例如天氣的情況會有很多種
不單是 下雨,晴天
還有下雪 冰雹 高溫 臺風 等等等等的情況
例如天氣的情況會有很多種
不單是 下雨,晴天
還有下雪 冰雹 高溫 臺風 等等等等的情況
2015-06-19
@Wi 觀察者模式 是 一個訂閱者 對應多個觀察者, 訂閱者是一個服務,他可以是天氣預報,也可以是別的服務,
而在天氣預報這個服務內可以發送各種不同的天氣內容
如果像你那樣將每個天氣內容都作為一個訂閱者的話,一對一的進行觀察的話只是一對多的一種特例
如何使用需要根據具體的場景靈活使用
而在天氣預報這個服務內可以發送各種不同的天氣內容
如果像你那樣將每個天氣內容都作為一個訂閱者的話,一對一的進行觀察的話只是一對多的一種特例
如何使用需要根據具體的場景靈活使用
2015-06-19