#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 可以舉個部落格訂閱的例子,當博主發表新文章的時候,即博主狀態發生了改 變,那些訂閱的讀者就會...