觀察者模式:定義物件間的一種一對多的依賴關係,當乙個物件的狀態發生改變時,所有依賴於它的物件都得到通知並被自動更新。它還有兩個別名,依賴 (dependents),發布-訂閱(publish-subsrcibe)。可以舉個部落格訂閱的例子,當博主發表新文章的時候,即博主狀態發生了改 變,那些訂閱的讀者就會收到通知,然後進行相應的動作,比如去看文章,或者收藏起來。博主與讀者之間存在種一對多的依賴關係。下面給出相應的uml圖設 計。
以部落格和部落格的粉絲(observer)為例
#include #include#include
using
namespace
std;
class
observer
virtual ~observer() {}
virtual
void
update() {}
};class
blog
virtual ~blog() {}
void attach(observer *observer)
void remove(observer*observer)
void
notify()
virtual
void setstatus(string
s)
virtual std::string
getstatus()
private
: list
m_observers;
protected
: std::
string
m_status;
};class blogbky : public
blog
~blogbky() {}
void setstatus(string
s)
string
getstatus()
private
:
string
m_name;
};class observerblog : public
observer
~observerblog() {}
void
update()
private
: std::
string
m_name;
blog *m_blog;
};
介面的使用:
#include "observer.h
"int
main()
{ blog *blog = new blogbky("
onlycxue");
observer *observer1 = new observerblog("
hello
",blog);
blog->attach(observer1);
blog->setstatus("
發表部落格!");
blog->notify();
system(
"pause");
//delete blog;
//delete observer1;
return
0;
C 觀察者模式(Observer)
當有很多個物件依賴於乙個狀態值時,為了在狀態值改變時統一的通知這些物件作出相應的改變,類似廣播通知 include include include include 觀察者抽象類 class cobserver virtual cobserver 狀態更新時的處理方法 virtual void upd...
Observer觀察者模式(C )
subject observers observer pattern 觀察者模式定義 物件之間的一對多依賴關係,當乙個物件改變狀態時,所有依賴於它的物件都會自動獲得通知 觀察者模式應用 主題物件只與觀察者基類有耦合 客戶配置觀察者的數量與型別 observers首先要知道subject,然後把自己註...
C 觀察者模式(Observer)
理解 訂閱 發布。把所有需要通知的物件新增到發布者類裡面。發布者更改自己狀態後通知觀察者 using system.collections.generic using system.windows.forms namespace designmode.observer public class we...