C 觀察者模式(Observer)

2021-09-22 10:22:15 字數 1212 閱讀 6832

當有很多個物件依賴於乙個狀態值時,為了在狀態值改變時統一的通知這些物件作出相應的改變,類似廣播通知

#include #include #include #include // 觀察者抽象類

class cobserver

virtual ~cobserver() {}

// 狀態更新時的處理方法

virtual void updatestate(std::string sstate) = 0;

protected:

// 物件的名字,用於區分不同的觀察者

std::string m_sname;

};// 通知者抽象類

class csubject

// 增加乙個觀察者

virtual void attach(cobserver *observer) = 0;

// 去除乙個觀察者

virtual void detach(cobserver *observer) = 0;

// 更改狀態,通知觀察者

virtual void notify(const std::string &sstate) = 0;

};// 具體的觀察者a

class cconcreteobservera :public cobserver

virtual void updatestate(std::string sstate) };

// 具體的通知者a

class cconcretesubjecta :public csubject

// 去除乙個觀察者

virtual void detach(cobserver *observer) }

// 更改狀態,通知觀察者

virtual void notify(const std::string &sstate) }

private:

// 觀察者鍊錶

std::listm_listobserver;

};int main()

1、觀察者和被觀察者是抽象耦合的

2、建立一套觸發機制

Observer觀察者模式(C )

subject observers observer pattern 觀察者模式定義 物件之間的一對多依賴關係,當乙個物件改變狀態時,所有依賴於它的物件都會自動獲得通知 觀察者模式應用 主題物件只與觀察者基類有耦合 客戶配置觀察者的數量與型別 observers首先要知道subject,然後把自己註...

C 觀察者模式(Observer)

理解 訂閱 發布。把所有需要通知的物件新增到發布者類裡面。發布者更改自己狀態後通知觀察者 using system.collections.generic using system.windows.forms namespace designmode.observer public class we...

c 觀察者模式(observer)

觀察者模式 定義物件間的一種一對多的依賴關係,當乙個物件的狀態發生改變時,所有依賴於它的物件都得到通知並被自動更新。它還有兩個別名,依賴 dependents 發布 訂閱 publish subsrcibe 可以舉個部落格訂閱的例子,當博主發表新文章的時候,即博主狀態發生了改 變,那些訂閱的讀者就會...