1、概念
定義了一種一對多的依賴關係,讓多個觀察者物件同時監聽某一主題物件,這個主題的狀態發生變化是就通知所有的觀察者物件,是這些觀察者自動更新自己。
2、角色
觀察者(observer)—觀察者有乙個更新自己狀態的方法,當它觀察的那個主題的裝太發生了變化,主題會通知這些觀察者,觀察者接到通知後更新自己的狀態。所以觀察者有乙個update()方法。
主題(subject)—主題包含多個觀察者,就有add和remove觀察者的方法。該主題的狀態改變了需要通知那些觀察者,所以還有乙個notify()方法。
3、**模型
模型類
using system; using system.collections.generic; using system.text; namespace observerpattern public void removeobserver(observer observer) public void notify() } } public abstract class observer public class substancesubject : subject set } } public class substanceobserver : observer public override void update() 的狀態是 ", observername, observerstate); } public substancesubject currentsubstancesubject set } } }
呼叫
using system; using system.collections.generic; using system.text; namespace observerpattern } }
結果
觀察者模式主要是用於某一處狀態的改變需要讓其他不同的地方知道的情況下。最常見的就是在做窗體專案中,窗體中的某個控制項我們可以用+=給他新增系統自帶的事件比如按鈕,
this.button.click += new system.eventhandler(執行的方法1);我們可以給這個click事件加很多方法this.button.click += new system.eventhandler(執行的方法2);這就是觀察者模式的應用。同時我們可以寫自己的事件myeventhandler,則有
this.button.click += new myeventhandler (執行的方法3);
當然,這是.net類庫已經實現好了的,在我們的實際專案中,可以按照上述的模型使用。只需建立好兩個角色,做好實現。就解決那種「一處變化多處響應」的需求了。
java 設計模式學習筆記(12) 觀察者模式
觀察者模式 定義了一種一對多的依賴關係,讓多個觀察者物件同時監聽某個主題物件,這個主題物件在狀態發生變化時會通知所有觀察者物件,使他們能夠自動更新自己。根據概念,我們知道這個模式由 多個觀察者,乙個被觀察物件組成。觀察者需要將到被觀察物件那裡去註冊自己,或者說被觀察物件儲存著多個觀察者得引用。一旦被...
觀察者模式學習筆記
觀察者模式 模式概念 觀察者模式定義了物件之間的一對多依賴,這樣一來,當乙個物件改變狀態時,它的所有依賴者都會收到通知並自動更新 設計思想 觀察者模式提供了一種物件設計,讓主題和觀察者之間松耦合 主題不需要知道觀察者的具體類是誰,主題唯一依賴的東西是乙個實現observer介面的物件列表,所以我們可...
python觀察者模式 python 觀察者模式
python 觀察者模式 前言e 寫的倉促就不截uml類圖了,書本chapter10,p313能看到圖 一旦觀察的主題有更新,就會通知到觀察者們,下面的例子是最簡單的乙個觀察者範例,假設這是一群投機分子密切關注 軍 火 倉庫的產品與數量變動 class inventory def init self...