c 觀察者模式(observer)

2022-05-13 22:27:11 字數 1653 閱讀 8989

觀察者模式:定義物件間的一種一對多的依賴關係,當乙個物件的狀態發生改變時,所有依賴於它的物件都得到通知並被自動更新。它還有兩個別名,依賴 (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...