在設計一組物件與它們所依賴的物件之間一致(同步)的交流模型時,觀察者模式(observer pattern)很有用,它可以使物件的狀態與它們所依賴的物件的狀態保持同步。 observer pattern推薦採用發布者--訂閱者(publisher--subscriber)模型,使這組觀察者(observer)和主題(subject)物件之間有清晰的界限。比較直觀的形式是「註冊--通知--撤消註冊」。下面描述這樣乙個過程:
1.observer將自己註冊到subject中,subject將object存放在乙個容器(container)裡。
2.observer物件發生某種變化,從container中得到所有註冊過的observer,將變化通知object。
3.object告訴subject要撤消註冊,subject從container中將object除去。
為了實現這種機制主題需要為註冊登出和通知提供乙個介面。
//inte***ce the all observer classes should implement
public inte***ce iobserver
//inte***ce that all observable classes should implement
public inte***ce iobservable
下面是具體實現:
public class observableimpl: iobservable
//remove the observer
public void unregister(iobserver anobserver)
//common method to notify all the observers
public void notifyobservers(object anobject)
}
}在 .net 應用程式中可以使用這些構造,也可以引入委託和事件實現observer pattern,這樣不必開發專用於支援該模式的特定型別。以下是一道關於observer pattern不錯的練習題:
貓大叫一聲,所有的老鼠都開始逃跑,主人被驚醒。
要求:1.要有聯動性,老鼠和主人的行為是被動的。
2.考慮可擴充套件性。
設計模式之 Observer
在設計一組物件與它們所依賴的物件之間一致 同步 的交流模型時,觀察者模式 observer pattern 很有用,它可以使物件的狀態與它們所依賴的物件的狀態保持同步。observer pattern推薦採用發布者 訂閱者 publisher subscriber 模型,使這組觀察者 observe...
設計模式Observer
observer設計模式的定義 定義了物件之間的一對多的依賴,這樣以來,當乙個物件改變狀態時,它的所有依賴者都會受到通知並自動更新。ifndef subjec h define subjec h include observer.h class subject subject subject sub...
Observer設計模式
observer設計模式是針對 乙個物件對多個物件中,乙個物件發生狀態改變,其他附屬物件發生相應的更新。是一種松耦合的設計模式。例子 假設我們有個高檔的熱水器,我們給它通上電,當水溫超過95度的時候 1 揚聲器會開始發出語音,告訴你水的溫度 2 液晶屏也會改變水溫的顯示,來提示水已經快燒開了。現在我...