觀察者模式(observer pattern): 定義物件間的一種一對多(或一對一)的依賴關係,當被觀察者狀態發生改變時,註冊的觀察者都會被通知。
觀察者模式又稱 發布-訂閱(publish/subscribe)模式、模型-檢視(model/view)模式、源-***(source/listener)模式或從屬者(dependents)模式
建立一種物件和物件之間的依賴關係,乙個物件發生改變時將自動通知其他物件,其他物件收到通知各自處理自己的業務邏輯。這裡發生改變的物件稱為被觀察者,被通知的物件稱為觀察者。這些觀察者之間沒有關係,可以根據業務需求新增或刪除觀察者,便於系統維護和擴充套件。
uml 圖
**實現的場景: 假設有個乙個商人賣東西,他的使用者有窮人和富人兩類,商人的商品可能會漲價也可能會降價 **波動對窮人和富人的購買行為有不同的影響。
分析: 這裡的觀者目標是 商品** ,被觀察者是窮人和富人,商品**變化將會通知窮人和富人,窮人富人對購買做出不同的反映。
// 目標
inte***ce observables
// 具體目標
class saler implements observables
public function detach(observer $ob)}}
public function notify()}}
public function increprice($range)
public function getrange()
} // 觀察者
inte***ce observer
//具體觀察者(窮人)
class poorbuyer implements observerelse}}
//具體觀察者(富人)
class richbuyer implements observer
}
PHP設計模式系列(九) 觀察者模式
觀察者模式 observer pattern 定義物件間的一種一對多依賴關係,使得每當乙個物件狀態發生改變時,其相關依賴物件皆得到通知並被自動更新。觀察者模式又叫做發布 訂閱 publish subscribe 模式 模型 檢視 model view 模式 源 source listener 模式或...
設計模式系列 觀察者模式
觀察者模式定義了物件之間的一對多依賴,讓多個觀察者物件同時監聽乙個主體物件。當主體物件發生變化時,它的所有依賴者 觀察者 都會收到通知並更新。觀察者模式主要用於在關聯行為之間建立一套觸發機制的場景,支援廣播通訊。觀察者模式也被稱為 發布 訂閱模式。場景 新聞社開發了一套新聞訂閱服務,他們會給每個訂閱...
php設計模式 觀察者模式
簡言之 觀察者模式 observer 當乙個物件狀態發生改變時,依賴它的物件全部會收到通知,並自動更新。具體描述 乙個物件通過新增乙個方法 該方法允許另乙個物件 觀察者,註冊自己 使本身變得可觀察。當可觀察的物件更改時,它會將訊息傳送到已註冊的觀察者。這些觀察者使用該資訊執行的操作與可觀察的物件無關...