Observer(觀察者) 物件行為型模式

2022-08-09 05:12:14 字數 2269 閱讀 3379

1.意圖

定義物件間的一種一對多的依賴關係,當乙個物件的狀態發生改變時,所有依賴於它的物件都得到通知並被自動更新。

2.別名

依賴(depenents),發布-訂閱(publish-subscribe)

3.動機

乙個目標可以有任意數目的依賴它的觀察者。一旦目標的狀態發生改變,所有的觀察者都得到通知。作為這個通知的響應,每個觀察者都將查詢目標以使其狀態於目標的同步。

4.適用性

5.結構

6.**例項

//

subject.h

#include

#include

class

abstractobserver;

class

abstractsubject

;class concretesubject : public

abstractsubject

;

//

observer.h

#include

class

abstractsubject;

class

abstractobserver

;class concreteobserver1 : public

abstractobserver

;class concreteobserver2: public

abstractobserver

;class concreteobserver3 : public

abstractobserver

;

//

subject.cpp

#include

"subject.h

"#include

"observer.h

"concretesubject::concretesubject()

concretesubject::~concretesubject()

void concretesubject::setstate(int

state)

void concretesubject::attach(std::shared_ptrpobserver)

intconcretesubject::getstate()

void

concretesubject::notify()

}

//

observer.cpp

#include

"observer.h

"#include

"subject.h

"#include

concreteobserver1::concreteobserver1(std::shared_ptr

psubject)

: m_subject(psubject)

concreteobserver1::~concreteobserver1()

void

concreteobserver1::update()

concreteobserver2::concreteobserver2(std::shared_ptr

psubject)

: m_subject(psubject)

concreteobserver2::~concreteobserver2()

void

concreteobserver2::update()

concreteobserver3::concreteobserver3(std::shared_ptr

psubject)

: m_subject(psubject)

concreteobserver3::~concreteobserver3()

void

concreteobserver3::update()

//

client.cpp

#include

"observer.h

"#include

"subject.h

"int

main()

7.測試結果

8.效果

Observer 觀察者 行為模式

observer 觀察者 行為模式,定義物件的一對多的依賴關係,當乙個物件的狀態發生改變時,所有依賴於該物件的物件都會得到通知並被自動更新。observe模式也很好理解,恩,像flash中的事件偵聽,像rss,向報紙的訂閱。我拿puremvc來舉例吧,puremvc是跨語言的,現在已經支援很多種語言...

行為型 觀察者模式(Observer)

觀察者模式 observer pattern 定義物件之間的一種一對多依賴關係,使得每當乙個物件狀態發生改變時,其相關依賴物件皆得到通知並被自動更新。觀察者模式的別名包括發布 訂閱 publish subscribe 模式 模型 檢視 model view 模式 源 source listener ...

行為型模式之觀察者OBSERVER

當乙個物件的狀態發生改變時,所以依賴它的物件都會得到通知並被自動更新。在excel中,當資料變化時,與資料對應的 和圖形都會隨之變化。這就需要資料在變化時自行通知其的依賴類,隨之改變。如圖subject物件維持乙個依賴它的觀察物件表,當subject內容發生變化,需要通知觀察者時就會呼叫觀察者物件的...