觀察者模式 C 實現

2022-04-08 19:16:09 字數 1843 閱讀 2122

[cpp]

#include  

#include  

#include  

#include  

/*  氣象監控應用問題 (head first 設計模式案例) 

*/  

using namespace std; 

class observer   //觀察者公共介面   

};  

class subject    //主題公共介面     問題:成員函式為什麼不能用純虛函式?   

virtual void remove_observer(observer o){} 

virtual void notify_observer() {} 

};    

class display_element   //顯示公共介面   ;  

class weatherdata : public subject   //具體主題   

void register_observer(observer* o)  //將觀察者註冊到觀察者列表中   

void remove_observer(observer* o) 

void notify_observer()     //通知觀察者   

}    

void set_measurements(float temperature, float humidity, float pressure) 

}; class currentconditiondisplay: public observer, public display_element  //具體觀察者 ,同時繼承了顯示公共介面   

void update(float temperature, float humidity, float pressure) 

void display() 

};  

//  客戶端    

int main()   

#include

#include

#include

#include

/*  氣象監控應用問題 (head first 設計模式案例)

*/using namespace std;

class observer   //觀察者公共介面

};class subject    //主題公共介面     問題:成員函式為什麼不能用純虛函式?

virtual void remove_observer(observer o){}

virtual void notify_observer() {}

};class display_element   //顯示公共介面

;class weatherdata : public subject   //具體主題

void register_observer(observer* o)  //將觀察者註冊到觀察者列表中

void remove_observer(observer* o)

void notify_observer()     //通知觀察者

}  void set_measurements(float temperature, float humidity, float pressure)

class currentconditiondisplay: public observer, public display_element  //具體觀察者 ,同時繼承了顯示公共介面

void update(float temperature, float humidity, float pressure)

void display()

};//  客戶端 

int main() 

C 實現觀察者模式

定義物件間的一種一對多的依賴關係,當乙個物件的狀態發生改變時,所有依賴於它的物件都得到通知並被自動更新。完美的將觀察者和被觀察的物件分離開。有時又被稱為 模型 檢視 view 模式 源 收聽者 listener 模式 或為發布 訂閱模式 目標就是通知的發布者,觀察者是通知的訂閱者 接受通知 obse...

C 實現觀察者模式

舉乙個例子 報社發行報紙 你訂閱報紙,一旦有新一期的報紙發行,新報紙就會送到你家裡,只要你一直訂閱,你就一直會收到新報紙 你不再訂閱報紙的時候,就收不到以後的新報紙了 報社運營的時候,一直會有人去訂閱或者取消訂閱報紙.發布者 訂閱者 觀察者模式 publishers subscribers obse...

觀察者模式 C 實現

定義物件間的一種一對多的依賴關係,當乙個物件的狀態發生改變時,所有依賴於它的物件都得到通知並被自動更新。觀察者模式有四個角色 抽象主題 具體主題 抽象觀察者 具體觀察者。抽象主題 把所有觀察者物件的引用儲存到乙個聚集裡,每個主題都可以有任何數量的觀察者。具體主題 將有關狀態存入具體觀察者物件 在具體...