設計模式 觀察者模式2

2022-02-09 09:38:01 字數 1235 閱讀 8418

觀察者模式

一.概念:

傳統理解:觀察者模式(有時又被稱為發布(publish

觀察者模式(observer)完美的將觀察者和被觀察的物件分離開。舉個例子,使用者介面可以作為乙個觀察者,業務資料是被觀察者,使用者介面觀察業務資料的變化,發現資料變化後,就顯示在介面上。物件導向設計的乙個原則是:系統中的每個類將重點放在某乙個功能上,而不是其他方面。乙個物件只做一件事情,並且將他做好。觀察者模式在模組之間劃定了清晰的界限,提高了應用程式的可維護性和重用性。

觀察者設計模式定義了物件間的一種一對多的依賴關係,以便乙個物件的狀態發生變化時,所有依賴於它的物件都得到通知並自動重新整理。

個人理解:觀察者與被觀察者的關係,可以是一對多,多個觀察者。當被觀察者的狀態或熟悉發生變化時能及時通知所有觀察者。

二.demo:

觀察者:

///

///觀察者(訂閱者)

/// public

class

subscribe

public

void

send(publish publish)

:收到:發布的

",name,publish.name,publish.title);}}

被觀察者:

///

///被觀察者(發布)

/// public

class

publish

public

string title

public

void

add(subscribe subscribe)

public

void

update()}}

呼叫:

class

program

;publish.add(

new subscribe() );

publish.add(

new subscribe() );

publish.update();

"ok");

console.read();}}

執行效果:

三.注意:

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

被觀察物件向觀察者推送主題的詳情資訊時候,不管觀察者是否需要,這些資訊一般是觀察目標物件的全部或者部分資訊。一般這種模型實現通過update object obj 將觀察目標物件傳入進去。被觀察物件通知觀察者時候,只傳送少量的資訊,如果需要詳情資訊時候,被觀察物件也就是觀察目標物件主動到觀察者當中,...

python 設計模式 觀察者 觀察者設計模式

在觀察者設計模式這種模式中,物件被表示為等待事件觸發的觀察者。一旦發生指定的事件,觀察者就會關注該主體。當事件發生時,主體告訴觀察者它已經發生。以下uml圖表示觀察者模式 如何實現觀察者模式?現在讓我們來看看如何實現觀察者模式。參考以下實現 import threading import time ...

Head First 設計模式2 觀察者模式

1,觀察者模式定義了物件之間一對多的關係 2,主題 也就是可觀察者 用乙個共同的介面來更新觀察者 3,觀察者和可觀察者之間用鬆耦合方式結合,可觀察者不知道觀察者細節,只知道觀察者實現了觀察者介面 4,使用此模式你可以從被觀察者處 推 或者 拉 資料,推 的方式被認為更正確 5,有多個觀察者時,不可以...