1、觀察者模式簡介
1.1定義
有時候也叫 發布/訂閱模式,定義物件間的一種一對多的依賴關係,當乙個物件的狀態發生改變時,所有依賴於它的物件都得到通知並被自動更新。
觀察者模式在被觀察者和觀察者之間建立了乙個抽象的耦合,被觀察者並不知道任何乙個具體的觀察者,只是儲存著抽象觀察者的列表,每個具體觀察者都符合乙個抽象觀察者的介面。
1.2 適用環境
當乙個物件改變需要同時改變多個其他物件,而且他不知道具體有多少物件需要改變的時候,應該考慮使用觀察者模式。
實現方法不止一種,但這裡僅寫出event的實現方法
要用事件來實現,之所以不用委託實現觀察者模式,是因為
用委託實現的觀察者模式會導致耦合性很高。
如果乙個委託不需要在其定義的類之外進行觸發,那就將其轉化為事件,保證它不會在不可知的情況下被觸發。
class cat //被觀察者的類
public cat(string name, string color)
public delegate void catshouteventhandler();//1
public event catshouteventhandler catshoutevent;//2
public void catshout()//貓叫
}class mouse//觀察者的類
public mouse(string name, string color)
public void mouserun()//觀察者的行動
}////////////////////////////////////////
class program
}
------------恢復內容結束------------ 設計模式 觀察者模式(2)
被觀察物件向觀察者推送主題的詳情資訊時候,不管觀察者是否需要,這些資訊一般是觀察目標物件的全部或者部分資訊。一般這種模型實現通過update object obj 將觀察目標物件傳入進去。被觀察物件通知觀察者時候,只傳送少量的資訊,如果需要詳情資訊時候,被觀察物件也就是觀察目標物件主動到觀察者當中,...
設計模式 觀察者模式2
觀察者模式 一.概念 傳統理解 觀察者模式 有時又被稱為發布 publish 觀察者模式 observer 完美的將觀察者和被觀察的物件分離開。舉個例子,使用者介面可以作為乙個觀察者,業務資料是被觀察者,使用者介面觀察業務資料的變化,發現資料變化後,就顯示在介面上。物件導向設計的乙個原則是 系統中的...
python 設計模式 觀察者 觀察者設計模式
在觀察者設計模式這種模式中,物件被表示為等待事件觸發的觀察者。一旦發生指定的事件,觀察者就會關注該主體。當事件發生時,主體告訴觀察者它已經發生。以下uml圖表示觀察者模式 如何實現觀察者模式?現在讓我們來看看如何實現觀察者模式。參考以下實現 import threading import time ...