觀察者模式:
觀察者模式又叫分布-訂閱模式
觀察者模式:定義了一種一對多的依賴關系,讓多個觀察者對象同時監聽某一個主題對象。這個主題對象在狀態發生變化時,會通知所有觀察者對象,使它們能夠自動更新自己。
觀察者模式(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