第
一、觀察者模式在被觀察者和觀察者之間建立乙個抽象的耦合。被觀察者角色所知道的只是乙個具體觀察者列表,每乙個具體觀察者都符合乙個抽象觀察者的介面。被觀察者並不認識任何乙個具體觀察者,它只知道它們都有乙個共同的介面。
由於被觀察者和觀察者沒有緊密地耦合在一起,因此它們可以屬於不同的抽象化層次。如果被觀察者和觀察者都被扔到一起,那麼這個物件必然跨越抽象化和具體化層次。
第二、觀察者模式支援廣播通訊。被觀察者會向所有的登記過的觀察者發出通知,
觀察者模式有下面的缺點:
第一、如果乙個被觀察者物件有很多的直接和間接的觀察者的話,將所有的觀察者都通知到會花費很多時間。
第二、如果在被觀察者之間有迴圈依賴的話,被觀察者會觸發它們之間進行迴圈呼叫,導致系統崩潰。在使用觀察者模式是要特別注意這一點。
第三、如果對觀察者的通知是通過另外的執行緒進行非同步投遞的話,系統必須保證投遞是以自恰的方式進行的。
第四、雖然觀察者模式可以隨時使觀察者知道所觀察的物件發生了變化,但是觀察者模式沒有相應的機制使觀察者知道所觀察的物件是怎麼發生變化的。
觀察者模式的應用場景:
1、 對乙個物件狀態的更新,需要其他物件同步更新,而且其他物件的數量動態可變。
2、 物件僅需要將自己的更新通知給其他物件而不需要知道其他物件的細節。
python觀察者模式 python 觀察者模式
python 觀察者模式 前言e 寫的倉促就不截uml類圖了,書本chapter10,p313能看到圖 一旦觀察的主題有更新,就會通知到觀察者們,下面的例子是最簡單的乙個觀察者範例,假設這是一群投機分子密切關注 軍 火 倉庫的產品與數量變動 class inventory def init self...
中介者 觀察者
建立型 1.factory method 工廠方法 2.abstract factory 抽象工廠 3.builder 建造者 4.prototype 原型 5.singleton 單例 結構型6.adapter class object 介面卡 7.bridge 橋接 8.composite 組合...
觀察者模式
觀察者模式 observer 完美的將觀察者和被觀察的物件分離開。舉個例子,使用者介面可以作為乙個觀察者,業務資料是被觀察者,使用者介面觀察業務資料的變化,發現資料變化後,就顯示在介面上。物件導向設計的乙個原則是 系統中的每個類將重點放在某乙個功能上,而不是其他方面。乙個物件只做一件事情,並且將他做...