C 學習(二十二)觀察者模式

2021-09-24 15:23:21 字數 415 閱讀 3510

實現觀察者模式有很多形式,比較直觀的一種是使用一種「註冊——通知——撤銷註冊」的形式。下面的三個圖詳細的描述了這樣一種過程:

(observer)將自己註冊到被觀察物件(subject)中,被觀察物件將觀察者存放在乙個容器(container)裡。

被觀察物件發生了某種變化(如圖中的somechange),從容器中得到所有註冊過的觀察者,將變化通知觀察者。

觀察者告訴被觀察者要撤銷觀察,被觀察者從容器中將觀察者去除。

觀察者將自己註冊到被觀察者的容器中時,被觀察者不應該過問觀察者的具體型別,而是應該使用觀察者的介面。這樣的優點是:假定程式中還有別的觀察者,那麼只要這個觀察者也是相同的介面實現即可。乙個被觀察者可以對應多個觀察者,當被觀察者發生變化的時候,他可以將訊息一一通知給所有的觀察者。基於介面,而不是具體的實現——這一點為程式提供了更大的靈活性。

二十二 內容觀察者 廣播

課前回顧 內容觀察者 註冊內容觀察者 uri uri2 uri.parse content 註冊層內容觀察者 resolver.registercontentobserver uri2,true new contentobserver new handler 在內容提供者新增通知內容觀察者 inse...

十二 觀察者模式

觀察者模式,定義了一種一對多的依賴關係,讓多個觀察者物件同時監聽某乙個主題物件。這個主題物件在狀態發生變化時,會通知所有觀察者物件,使他們能夠自動更新自己。subject public class subject public void detach public void notify obser...

設計模式 二十 觀察者模式

observer pattern 觀察者模式的別名包括發布 訂閱 publish subscribe 模式 模型 檢視 model view 模式 源 source listener 模式或從屬者 dependents 模式。觀察者模式是一種物件行為型模式。觀察者模式描述了如何建立物件與物件之間的依...