#include "stdafx.h"
#include #include #include #include #include #include #include using namespace boost;
//使用類的繼承,抽象類可以實現多型和提高內聚性
//主角1資料
typedef struct _subject1data
subject1data;
//主角2資料
typedef struct _subject2data
subject2data;
class subject;
//觀察者基類
class observer
virtual ~observer(){}
};//主角抽象類
class subject
// virtual ~subject(){}
};//具體主角類1
class concretesubject1 : public subject,public enable_shared_from_this
public:
virtual void addobserver(shared_ptrobserver)
virtual void removeobserver(shared_ptrobserver)
virtual void notify() }
void setdata(int id,const std::string & strname)
const subject1data& getdata()
void printdata()
private:
subject1data __m_data;
};//具體主角類2
class concretesubject2 : public subject,public enable_shared_from_this
virtual void removeobserver(shared_ptrobserver)
virtual void notify() }
void setdata(double dbdata,const std::string & strname)
const subject2data& getdata()
void printdata()
private:
subject2data __m_data;
shared_ptrget_shared_ptr_from_this() };
//具體觀察者a //多重繼承不要忘了加2個public
class observera : public observer, public enable_shared_from_this
virtual void updateforsubject2(shared_ptrsubject2)
virtual void observesubject(shared_ptrsubject)
private:
shared_ptrget_shared_ptr_from_this() };
//具體觀察者b //多重繼承不要忘了加2個public
class observerb : public observer, public enable_shared_from_this
virtual void updateforsubject2(shared_ptrsubject2)
virtual void observesubject(shared_ptrsubject)
private:
shared_ptrget_shared_ptr_from_this() };
void testobservermode()
觀察者模式 Observer
個人理解 觀察者模式的核心是subject的attach和detach方法,載入observer物件 uml類圖 實現 public abstract class subject public void detach observer observer public void notify publ...
觀察者模式 ObServer
觀察者模式 observer 定義物件間的一種一對多的依賴關係,當乙個物件的狀態發生改變時,所有依賴於它的物件都得到通知並被自動更新 觀察者模式 observer 觀察者模式定義了一對多依賴關係,讓多個觀察者物件同時監聽某乙個主題物件。讓主題物件在狀態發生變化時,會通知所有觀察者物件,讓他們能夠自動...
觀察者模式(OBSERVER)
觀察者模式是我選擇將其列出來的第乙個模式。看了這個模式的概念之後,有種豁然開朗的感覺。工作也由實踐上公升到了理論。平時使用的各種 net 控制項都使用了這種模式,將這種模式應用到組成乙個系統的各個元件中去,怎乙個 妙 字了得。理解了它之後,不竟又對 net 的框架敬佩有佳。不知道這其中隱藏了多少未知...