歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> C++設計模式---觀察者模式

C++設計模式---觀察者模式

日期:2017/3/1 9:52:33   编辑:Linux編程

觀察者模式:

觀察者模式又叫分布-訂閱模式

觀察者模式:定義了一種一對多的依賴關系,讓多個觀察者對象同時監聽某一個主題對象。這個主題對象在狀態發生變化時,會通知所有觀察者對象,使它們能夠自動更新自己。

觀察者模式(Observer)結構圖:

結構圖及觀察者模式結構代碼解釋:

Subject類:

可翻譯為主題或抽象通知者,一般用一個抽象類或者一個接口實現。它把所有對觀察者對象的指針保存在一個集合裡,每個主題都可以有任何數量的觀察者。抽象主題提供一個接口,可以增加和刪除觀察者對象。

class Subject

{

private:

list<Observer *> observers = list<Observer *>();

public:

void Attach(Observer *observer)

{

observer.push_back(observer);

}

void Detach(observer * observer)

{

observers.remove(observer);

}

void Notify()

{

list<Observer *>::iteratorit=observer.begin();

for(;it!=observer.end();it++)

{

*it->Update();

}

}

};

Observer類:

抽象觀察者,為所有的具體觀察者定義一個接口,在得到主題的通知時更新自己。這個接口叫做更新接口。抽象觀察者一般用一個抽象類或者一個接口實現。更新接口通過包含一個Update()函數,這個函數叫做更新方法。

class Observer

{

public:

void Update()=0;

};

接下來請看第2頁精彩內容:http://www.linuxidc.com/Linux/2013-10/90907p2.htm

Copyright © Linux教程網 All Rights Reserved