observer設計模式主要包括以下兩種物件:
(1)被觀察物件:subject,它往往包含其他物件感興趣的東西,上面例子中熱水器中就是subject(被監視物件);
(2)觀察物件:observer,它觀察著subject,當subject中的某件事發生後,會告知observer,obersver會採取相應的行動。上面例子中顯示器和報警器就是觀察物件,當油箱中溫度大於95°時,報警器和顯示器就會做出相應的警報;
usingsystem;
using
system.collections.generic;
using
system.linq;
using
system.text;
using
system.threading.tasks;
namespace
}//////
subject被觀察物件 ---oil熱水器
/// internal
class
oil
public boileventargs(int
temperature)
}public
void
boilwater() }}
}//////
observer觀察物件 ---警報器
/// internal
class
alarm
度了,當前熱水器的牌子是,**是
",a.temperature, o.brand, o.price);}}
//////
observer觀察物件 ---顯示器
/// internal
class
display
度,當前熱水器的牌子是,**是
", a.temperature, o.brand, o.price);
console.readkey();}}
}
Observer 觀察者 設計模式
宣告 本博文篇幅短,適合review。一 概念 定義了一種一對多的依賴關係,讓多個觀察者物件同時監聽某乙個主題物件。這個主題物件在狀態發生變化時,會通知所有觀察者物件,使他們能夠自動更新自己。二 模式結構圖 三 例子 四 優缺點 1 優點 a 降低了觀察者與被觀察者之間的耦合。b subject在傳...
觀察者(observer)設計模式
假設我們有個高檔的熱水器,我們給它通上電,當水溫超過95度的時候 1 揚聲器會開始發出語音,告訴你水的溫度 2 液晶屏也會改變水溫的顯示,來提示水已經快燒開了。現在假設熱水器由三部分組成 熱水器 警報器 顯示器,它們來自於不同廠商並進行了組裝。那麼,應該是熱水器僅僅負責燒水,它不能發出警報也不能顯示...
設計模式 觀察者模式(observer
有時被稱作發布 訂閱模式,觀察者模式定義了一種一對多的依賴關係,讓多個觀察者物件同時監聽某乙個主題物件。這個主題物件在狀態發生變化時,會通知所有觀察者物件,使它們能夠自動更新自己。很經典的是cegui中的事件通知模式 模式中的角色 1 抽象主題 它把所有觀察者物件的引用儲存到乙個聚集裡,每個主題都可...