設計模式之Observer

2021-04-02 20:55:06 字數 1182 閱讀 3146

在設計一組物件與它們所依賴的物件之間一致(同步)的交流模型時,觀察者模式(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 液晶屏也會改變水溫的顯示,來提示水已經快燒開了。現在我...