PHP觀察者模式

2021-08-17 02:28:43 字數 2874 閱讀 8972

觀察者模式 當乙個物件的狀態發生改變時,依賴他的物件會全部收到通知,並自動更新

場景:當乙個事件發生後,要執行一連串更新操作,傳統的程式設計方式,就是在事件的**之後直接加入處理邏輯,當更新邏輯增多之後,**變得難以維護,這種方式是耦合式的,侵入式的,增加新的邏輯需要改變事件主題的**

觀察者模式實現了低耦合,非侵入式的通知與更新

abstract

class

eventgenerator

//事件通知

public

function

notify()

}}/*

* * 觀察者介面類

* inte***ce observer */

inte***ce

observer/**

* 觀察者1 */

class observer1 implements

observer}/*

* * 觀察者1 */

class observer2 implements

observer}/*

* * 事件

* class event */

class event extends

eventgenerator}//

建立乙個事件

$event = new

event();

//為事件增加旁觀者

$event->add(new

observer1());

$event->add(new

observer2());

//執行事件 通知旁觀者

$event->trigger();

1 抽象的事件產生類,定義乙個新增觀察者方法,和通知方法(執行觀察者方法)

2 定義觀察者介面,實現方法 ,觀察者實現

3 定義具體實現類繼承抽象事件,實現通知方法

4 建立物件,增加旁觀者,更新

具體註冊例項

<?php  

/** 

* 3.1php設計模式-觀測者模式 

* 3.1.1概念:其實觀察者模式這是一種較為容易去理解的一種模式吧,它是一種事件系統,意味 

*          著這一模式允許某個類觀察另乙個類的狀態,當被觀察的類狀態發生改變的時候, 

*          觀察類可以收到通知並且做出相應的動作;觀察者模式為您提供了避免元件之間

*          緊密耦合的另一種方法

* 3.1.2關鍵點:

*        1.被觀察者->追加觀察者;->一處觀察者;->滿足條件時通知觀察者;->觀察條件

*        2.觀察者 ->接受觀察方法

* 3.1.3缺點:

* 3.1.4觀察者模式在php中的應用場合:在web開發中觀察者應用的方面很多

*        典型的:使用者註冊(驗證郵件,使用者資訊啟用),購物**下單時郵件/簡訊通知等

* 3.1.5php內部的支援

*        splsubject 介面,它代表著被觀察的物件,

*        其結構:

*        inte***ce splsubject

*        

*        splobserver 介面,它代表著充當觀察者的物件,

*        其結構:

*        inte***ce splobserver

*        

*//**

* 使用者登陸-詮釋觀察者模式

*/class

user 

implements

splsubject   

/*** 去除觀察者

* @param splobserver $observer 觀察者

* @param int $type 觀察型別

*/public

function

detach(splobserver 

$observer

, $type

)    

}  /**

* 滿足條件時通知觀察者

* @param int $type 觀察型別

*/public

function

notify(

$type

)    

}  }  

/*** 新增使用者

* @param str $username 使用者名稱

* @param str $password 密碼

* @param str $email 郵箱

* @return bool

*/public

function

adduser()  

/*** 使用者資訊編輯

* @param str $username 使用者名稱

* @param str $password 密碼

* @param str $email 郵箱

* @return bool

*/public

function

edituser()  

}  /*** 觀察者-傳送郵件

*/class

send_mail 

implements

splobserver  

/***傳送郵件

*@param str $email 郵箱位址

*@param str $title 郵件標題

*@param str $content 郵件內容

*/public

function

sendemail(

$email

, $title

, $content

)    

}  ?> 

PHP 觀察者模式

觀察者模式 定義物件間的一種一對多的依賴關係,以便當乙個物件的狀態發生改變時,所有依賴於它的物件都得到通知並自動重新整理 能夠便利地建立檢視目標物件狀態的物件,並且提供與核心物件非耦合的指定功能 外掛程式系統 class observerable public function removeobse...

PHP觀察者模式

我理解的觀察者模式就是,當我們觸發乙個事件的時候,想要把這個操作告訴給我想要告訴的物件,讓他們都執行這個操作,就是將他們繫結到這個事件下。1.定義乙個基類 用於新增觀察者也就是我想要通知的物件,還有通知觀察者 eventgenerator.php abstract class eventgenera...

觀察者模式 php

觀察者模式 當你的某個功能在後期可能新增很多不太相干的功能時,可以考慮使用觀察者模式,如乙個使用者登入類,後期可能要求,記錄登入使用者日誌,簡訊提醒,郵件提醒等功能.個人更願意叫他補丁模式.簡單說,就是將每個補丁定義為乙個類,這些補丁類實現同一介面,這些補丁類實現同一方法.原始類只要接收這些補丁類的...