observer設計模式的定義:
定義了物件之間的一對多的依賴,這樣以來,當乙個物件改變狀態時,它的所有依賴者都會受到通知並自動更新。
#ifndef subjec_h
#define subjec_h
#include"observer.h"
class subject
;subject::subject(){}
subject::~subject(){}
#endif
#ifndef weatherdata_h
#define weatherdata_h
#include"subject.h"
#include
using namespace std;
class weatherdata:public subject
;weatherdata::weatherdata(){}
weatherdata::~weatherdata(){}
void weatherdata::registerobserver(observer *o)
void weatherdata::removeobserver(observer *o)
void weatherdata::notifyobservers()
}void weatherdata::measurementschanged()
void weatherdata::setmeasurements(float temperature,float humidity,float pressure)
#endif
#ifndef displayelement_h
#define displayelement_h
class displayelement
;displayelement::displayelement(){}
displayelement::~displayelement(){}
#endif
#ifndef observer_h
#define observer_h
class observer
;observer::observer(){}
observer::~observer(){}
#endif
#ifndef currentconditionsdisplay_h
#define currentconditionsdisplay_h
#include"subject.h"
#include"observer.h"
#include"displayelement.h"
#include
using namespace std;
class currentconditionsdisplay:public observer,public displayelement
;currentconditionsdisplay::currentconditionsdisplay(subject *weatherdata)
currentconditionsdisplay::~currentconditionsdisplay(){}
void currentconditionsdisplay::update(float temperature,float humidity,float pressure)
void currentconditionsdisplay::display()
;statisticsdisplay::statisticsdisplay(subject *weatherdata)
statisticsdisplay::~statisticsdisplay(){}
void statisticsdisplay::update(float temperature,float humidity,float pressure)
void statisticsdisplay::display()
;forecastdisplay::forecastdisplay(subject *weatherdata)
forecastdisplay::~forecastdisplay(){}
void forecastdisplay::update(float temperature,float humidity,float pressure)
void forecastdisplay::display()
;heatindexdisplay::heatindexdisplay(subject *weatherdata)
heatindexdisplay::~heatindexdisplay(){}
void heatindexdisplay::update(float temperature,float humidity,float pressure)
float heatindexdisplay::computeheatindex(float t,float rh)
void heatindexdisplay::display()
Observer設計模式
observer設計模式是針對 乙個物件對多個物件中,乙個物件發生狀態改變,其他附屬物件發生相應的更新。是一種松耦合的設計模式。例子 假設我們有個高檔的熱水器,我們給它通上電,當水溫超過95度的時候 1 揚聲器會開始發出語音,告訴你水的溫度 2 液晶屏也會改變水溫的顯示,來提示水已經快燒開了。現在我...
設計模式 Observer
定義物件間的一種一對多的依賴關係,當乙個物件的狀態發生改變時,所有依賴於它的物件都得到通知並被自動更新。dependents,publish subscribe 適用性 結構 允許你獨立的改變subject和observer。優缺點 1.建立subject到其observer之間的對映 最簡單的方法...
設計模式 Observer模式
目錄 具體實現總結 觀察者模式 發布 訂閱模式 是一種行為型模式,定義一系列物件之間的一對多關係,當乙個物件改變 更新狀態時,依賴它的都會收到通知改變或者更新。在此種模式中,乙個目標物件管理所有相依於它的觀察者物件,並且在它本身的狀態改變時主動發出通知。這通常透過呼叫各觀察者所提供的方法來實現。此種...