【特點】
觀察者模式定義物件的一對多依賴,這樣一來,當乙個物件改變狀態時,它的所有依賴者都會收到通知並自動更新!
觀察者模式利用「組合」將許多觀察者組合進主題中。物件(觀察者——主題)之間的這種關係不是通過繼承產生的,而是在執行時利用組合的方式產生的。 ——多用組合,少用繼承!
【觀察者模式的優點和缺點】
觀察者模式的優點:
1、觀察者和主題之間的耦合度較小;
2、支援廣播通訊;
觀察者模式的缺點:
1、由於觀察者並不知道其它觀察者的存在,它可能對改變目標的最終代價一無所知。這可能會引起意外的更新。
【觀察者模式適用場景】
1、當乙個抽象模型有兩個方面,其中乙個方面依賴於另乙個方面。
2、當對乙個物件的改變需要同時改變其它物件,而不知道具體有多少個物件待改變。
3、當乙個物件必須通知其它物件,而它又不能假定其它物件是誰。換句話說,你不希望這些物件是緊密耦合的。
<?php
/** * 抽象主題角色
*/inte***ce subject
/** * 具體主題角色
*/class concretesubject implements subject
/*** 增加乙個新的觀察者物件
* @param observer $observer
*/public function attach(observer $observer)
/*** 刪除乙個已註冊過的觀察者物件
* @param observer $observer
*/public function detach(observer $observer)
unset($this->_observers[$index]);
return true;
}/**
* 通知所有註冊過的觀察者物件
*/public function notifyobservers()
foreach ($this->_observers as $observer)
return true;
}}/**
* 抽象觀察者角色
*/inte***ce observer
class concreteobserver implements observer
/*** 更新方法
*/public function update()
}/**
* 客戶端
*/class client
}client::main();
?>
觀察者模式(php實現)
觀察者模式 observer 當乙個物件的狀態發生改變時,依賴他的物件會全部收到通知,並自動更新。場景 乙個事件發生後,要執行一連串更新操作.傳統的程式設計方式,就是在事件的 之後直接加入處理邏輯,當更新得邏輯增多之後,會變得難以維護.這種方式是耦合的,侵入式的,增加新的邏輯需要改變事件主題的 而觀...
PHP 觀察者模式
觀察者模式 定義物件間的一種一對多的依賴關係,以便當乙個物件的狀態發生改變時,所有依賴於它的物件都得到通知並自動重新整理 能夠便利地建立檢視目標物件狀態的物件,並且提供與核心物件非耦合的指定功能 外掛程式系統 class observerable public function removeobse...
PHP觀察者模式
我理解的觀察者模式就是,當我們觸發乙個事件的時候,想要把這個操作告訴給我想要告訴的物件,讓他們都執行這個操作,就是將他們繫結到這個事件下。1.定義乙個基類 用於新增觀察者也就是我想要通知的物件,還有通知觀察者 eventgenerator.php abstract class eventgenera...