設計模式2 觀察者模式(c 碼)

2022-08-23 17:03:10 字數 931 閱讀 4442

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 ...