PHP實現觀察者模式

2021-06-27 00:11:36 字數 1303 閱讀 8494

【特點】

觀察者模式定義物件的一對多依賴,這樣一來,當乙個物件改變狀態時,它的所有依賴者都會收到通知並自動更新!

觀察者模式利用「組合」將許多觀察者組合進主題中。物件(觀察者——主題)之間的這種關係不是通過繼承產生的,而是在執行時利用組合的方式產生的。 ——多用組合,少用繼承!

【觀察者模式的優點和缺點】

觀察者模式的優點:

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...