觀察者模式(php實現)

2021-10-01 22:20:36 字數 1366 閱讀 2329

觀察者模式(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...