觀察者模式
一.概念:
傳統理解:觀察者模式(有時又被稱為發布(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,有多個觀察者時,不可以...