觀察者模式(observer),當乙個物件的狀態發生改變時,依賴他的物件會全部收到通知,並自動更新。
場景: 乙個事件發生後,要執行一連串更新操作.傳統的程式設計方式,就是在事件的**之後直接加入處理邏輯,當更新得邏輯增多之後,**會變得難以維護.這種方式是耦合的,侵入式的,增加新的邏輯需要改變事件主題的**,而觀察者模式實現了低耦合,非侵入式的通知與更新機制
觀察者模式典型實現方式:
1、定義2個介面:觀察者(通知)介面、被觀察者(主題)介面
2、定義2個類,觀察者物件實現觀察者介面、主題類實現被觀者介面
3、主題類註冊自己需要通知的觀察者
4、主題類某個業務邏輯發生時通知觀察者物件,每個觀察者執行自己的業務邏輯。
示例:如以下**
<?php
#***************====定義觀察者、被觀察者介面**********==
/** *
* 觀察者介面(通知介面)
* */
inte***ce loginobserver //觀察者介面
/** *
* 主題介面
* */
inte***ce loginobservable //被觀察物件介面
#********************主題類實現********************====
/** *
* 主題類(登入)
* 實現主題介面(被觀察者)
*/class login implements loginobservable
}//新增通知
public function addobserver($observer) //新增n個通知
}#*************************定義多個通知********************
//記錄日誌
class loginlogs implements loginobserver
}//新增積分
class loginintegral implements loginobserver
}#*************************===使用者登入********************
$login = new login ();
$login->addobserver (new loginlogs ()); //根據不同業務邏輯加入各種通知
$login->addobserver (new loginintegral ());
//登入
$user = [
'id' => 1,
'name' => '張三',
];$login->surelogin($user);
PHP實現觀察者模式
特點 觀察者模式定義物件的一對多依賴,這樣一來,當乙個物件改變狀態時,它的所有依賴者都會收到通知並自動更新 觀察者模式利用 組合 將許多觀察者組合進主題中。物件 觀察者 主題 之間的這種關係不是通過繼承產生的,而是在執行時利用組合的方式產生的。多用組合,少用繼承!觀察者模式的優點和缺點 觀察者模式的...
PHP 觀察者模式
觀察者模式 定義物件間的一種一對多的依賴關係,以便當乙個物件的狀態發生改變時,所有依賴於它的物件都得到通知並自動重新整理 能夠便利地建立檢視目標物件狀態的物件,並且提供與核心物件非耦合的指定功能 外掛程式系統 class observerable public function removeobse...
PHP觀察者模式
我理解的觀察者模式就是,當我們觸發乙個事件的時候,想要把這個操作告訴給我想要告訴的物件,讓他們都執行這個操作,就是將他們繫結到這個事件下。1.定義乙個基類 用於新增觀察者也就是我想要通知的物件,還有通知觀察者 eventgenerator.php abstract class eventgenera...