觀察者模式是最常用的設計模式之一,在此模式中,乙個目標物件管理依賴它的觀察物件,並在自身狀態發生改變的時候主動通知所有註冊的觀察者物件。觀察者模式常被用作設計事件處理系統。
例如下面的示例**是常見的觀察者模式的示例,在此用c++進行實現。貓作為目標物件 管理兩個觀察者,乙個是主人,乙個是老鼠。當貓叫這個事件發生時能夠呼叫觀察者相應的響應函式,從而做出相應的反應。
通過觀察者模式可以優化程式的業務邏輯,實現松耦合、易維護。
//-------------**示例-------------
#include
#include
using namespace std;
class cobserver;
class csubject
;private:
list* m_obslist;
public:
virtual attach(cobserver* pobs);
virtual detach(cobserver* pobs);
virtual notify();
virtual action()=0;
};class ccat:public csubject;};
class cobserver
;class cmaster:public cobserver
;class cmouse:public cobserver
;// 實現
cobserver::cobserver()
cobserver::~cobserver()
void cmaster::response()
void cmouse::response()
csubject::attach( cobserver* pobs )
csubject::detach( cobserver* pobs )
}csubject::notify()
}void ccat::cry()
設計模式C 實現 觀察者模式
觀察者模式 定義物件間的一種一對多的依賴關係,當乙個物件的狀態發生改變時,所有依賴於它的物件都得到通知並被自動更新。它還有兩個別名,依賴 dependents 發布 訂閱 publish subsrcibe 可以舉個部落格訂閱的例子,當博主發表新文章的時候,即博主狀態發生了改變,那些訂閱的讀者就會收...
設計模式 觀察者模式 C 實現
觀察者模式是軟體設計模式的一種。在此種模式中,乙個目標物件管理所有相依於它的觀察者物件,並且在它本身的狀態改變時主動發出通知。這通常透過呼叫各觀察者所提供的方法來實現。此種模式通常被用來實時事件處理系統。1.模式定義 觀察者模式 observer pattern 定義物件間的一種一對多依賴關係,使得...
C 實現設計模式 觀察者模式
關於觀察者模式,對它的認知依舊是起源於菜鳥教程的設計模式篇章,裡面解釋的很到位。這裡簡單介紹一句,當物件間存在一對多關係時,則使用觀察者模式 observer pattern 比如,當乙個物件被修改時,則會自動通知它的依賴物件。觀察者模式屬於行為型模式。詳細介紹戳該鏈結 菜鳥教程 觀察者模式 本文分...