設計模式筆記 Observer模式

2021-07-12 06:18:27 字數 1414 閱讀 2459

觀察者模式,專案中用的很多,因為它的邏輯比較清晰,實現方法比較統一,所以也挺好理解的!

觀察者模式:定義物件間的一種一對多的依賴關係,當乙個物件的狀態發生改變時, 所有依賴於它的物件都得到通知並被自動更新。這句話中物件間就是某個被觀察的東西subject和觀察者observer,乙個subject可以有乙個或多個observer(下圖只畫了乙個);狀態改變,也就是subject的狀態改變時(通過client程式呼叫setstate());通知觀察者,subject中有儲存所有觀察者的容器,通過notify()函式遍歷容器中所有的觀察者;怎麼通知?每乙個觀察者自己都有乙個update()函式,它要想獲得subject的更新後的狀態,需要有乙個subject*型別的引數,也就是subject在呼叫notify()時,把自己作為引數傳遞給observer的update(),這樣,在observer裡就可以通過這個subject指標獲得它的狀態更新了。

**比較簡單!首先是subject類的實現:

#include"observer.h"

#include#includeusing namespace std;

class observer;

class subject ;

#include "subject.h"

void subject::attach(observer * lpobserver)

void subject::detach(observer *lpobserver)

void subject::notify()

}void subject::setstate(string s)

string subject::getstate()

observer類的實現:

#include "subject.h"

class subject;

class observer ;

class observera :public observer ;

class observerb :public observer ;

#include"openstate.h"

#include#includeusing namespace std;

void observera::update(subject* sbj)

void observerb::update(subject* sbj)

使用者呼叫**:

int main()

設計模式Observer

observer設計模式的定義 定義了物件之間的一對多的依賴,這樣以來,當乙個物件改變狀態時,它的所有依賴者都會受到通知並自動更新。ifndef subjec h define subjec h include observer.h class subject subject subject sub...

Observer設計模式

observer設計模式是針對 乙個物件對多個物件中,乙個物件發生狀態改變,其他附屬物件發生相應的更新。是一種松耦合的設計模式。例子 假設我們有個高檔的熱水器,我們給它通上電,當水溫超過95度的時候 1 揚聲器會開始發出語音,告訴你水的溫度 2 液晶屏也會改變水溫的顯示,來提示水已經快燒開了。現在我...

設計模式 Observer

定義物件間的一種一對多的依賴關係,當乙個物件的狀態發生改變時,所有依賴於它的物件都得到通知並被自動更新。dependents,publish subscribe 適用性 結構 允許你獨立的改變subject和observer。優缺點 1.建立subject到其observer之間的對映 最簡單的方法...