設計模式的學習(二) 觀察者模式

2022-09-13 12:06:13 字數 901 閱讀 9739

觀察者模式:

定義:

觀察者模式定義了物件之間的一對多以來,這樣一來,當乙個物件改變狀態時,它的所有依賴著都會收到通知並自動更新。

模式說明:

模式具有高內聚 低耦合的特點

主題物件管理著某些資料,而主題內的資料發生改變,就會通知觀察者,觀察者已經訂閱(註冊)主題以便資料在更新時能夠收到更新,主題加觀察者的模式構成了觀察者模式

請求取消訂閱,當成功取消後,主題資料改變將不會通知取消者

主題是具有狀態的物件,觀察者依賴主題告訴他們狀態發生改變了,即產生了乙個主題對多個觀察者的關係,乙個主題控制乙份資料,而觀察者成為主題的依賴者

實現觀察模式的方法不止一種但是以包含subject(主題)與observer(觀察者)介面的類設計方法最常見

主題介面有註冊,撤銷觀察者方法以及更新所有當前觀察者的方法

觀察者介面有更新的方法,當主題狀態更新時此方法會被呼叫

兩個物件松耦合,他們可以互動,但不清楚彼此的細節。而觀察者模式下的主題與觀察者即為松耦合,主題只知道觀察者是乙個實現了某個介面(如observer介面)的類,而不需要其他細節,同樣有新的觀察者出現只需註冊為觀察者而不需要修改主題類的**。改變主題或觀察者中的一方不會影響另一方,因為二者非緊耦合,只要兩者間的介面仍被遵循,我們就可以自由的改變他們。松耦合的設計之所以能讓我們建立有彈性的oo系統,能夠應對變化,是因為物件間的互相依賴降到了最低。

設計原則:

為了互動物件之間的松耦合設計而努力

其他:

***是觀察者模式的一種實現,***模式也就是觀察者模式的一種。

***模式是對某種共有操作的監控。當此操作執行時對此操作作相應處理。

學習設計模式 觀察者模式

說明 觀察者模式就是有兩個角色,乙個觀察者 乙個通知者,兩者的關係是多對一。當某個是事件觸發時,通知者通知觀察者去處理相應的事件。為了解耦合,需要將兩個角色都先抽象,然後再定義具體的實現類。缺點 需要所有觀察者處理相應事件名稱一致 需求 學生自習的時候開小差,需要代表時刻觀察老師是否來了,如果來了,...

設計模式學習 觀察者模式

定義 定義物件間一種一對多的依賴關係,使得每當乙個物件發生變化時,則所有依賴於他的物件都會得到通知並自動更新。使用場景 特點 實現物件的解耦,將觀察者和被觀察者完全隔離,只依賴於observe和observable抽象。簡單實現例子 抽象觀察者類,為所有具體觀察者定義乙個介面,在得到通知時更新自己 ...

設計模式學習 觀察者模式

觀察者模式就是某種事件發生之後,被觀察者收到訊號,通知註冊的觀察者進行邏輯處理,一般遊戲開發中任務和成就多是類似實現。簡單示例 pragma once include using namespace std const int max observer num 100 enum class even...