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