Observer 觀察者模式

2021-06-22 22:03:54 字數 2006 閱讀 4179

定義

物件間一種一對多的依賴關係,當乙個物件的狀態發生改變時,所有依賴它的物件都得到通知。

案例

小明非常愛吃,吃得是非常之胖,他的醫生小白建議他不要吃多了,但是他始終不聽,吃到後面吃窮了。沒有錢,但是他又想吃,這時候他就到處借錢。這不借了小黑500元,至今還沒有還上。他的醫生小白和小黑都那她沒有辦法,這時候小綠給他們想了乙個辦法,給了他們幾件法寶,一件是subject法寶,要把它悄悄放在小明的身上,還有兩件是observer法寶,他們各帶乙個,還有乙個event監控,他們必須根據相應的event來對小明進行監控,現在有兩種監控:一種是吃,一種是買。只要小明一吃東西,小白就知道了。只要小明一買東西,小黑就知道了:「小樣還有錢」。

event提供了新增、刪除observer,當xiaoming有動作的時候提醒observer:

class

event

;voidevent

::add

(obsever

*obsever

)

void

event

::notify

(info

*info

)

xiaoming儲存了兩個事件,乙個是吃,是乙個買:

class

xiaoming

void

buy()

event

&eatevent

()const

event

&buyevent

()const

private

:

event

m_eatevent

;

event

m_buyevent

;};

xiaobai和xiaohei分別監xiaoming的吃和買事件:

class

observer

];classxiaobai

:public

observer

};

class

xiaohei

:public

observer

};

xiaoming

xm;xiaoheixh;xiaobaixb;xm.eatevent

().add

(&xb

);xm

.buyevent

().add

(&xh

);xm

.eat

();xm

.buy

();

適用性

觀察者模式 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 的框架敬佩有佳。不知道這其中隱藏了多少未知...