設計模式Observer

2021-06-19 07:43:17 字數 2497 閱讀 5885

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模式

目錄 具體實現總結 觀察者模式 發布 訂閱模式 是一種行為型模式,定義一系列物件之間的一對多關係,當乙個物件改變 更新狀態時,依賴它的都會收到通知改變或者更新。在此種模式中,乙個目標物件管理所有相依於它的觀察者物件,並且在它本身的狀態改變時主動發出通知。這通常透過呼叫各觀察者所提供的方法來實現。此種...