PHP設計模式之觀察者模式定義與用法分析

2022-09-26 05:42:14 字數 2591 閱讀 9547

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

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

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

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 收到執行通知 執行完畢!

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 $cowww.cppcns.comntent 郵件內容

*/public function sendemail($email, $title, $content) }

?>

php設計模式之 觀察者模式

觀察者模式 observer 當乙個物件狀態發生改變時,依賴它的物件全部收到通知,並自動更新。抽象被觀察者 abstract class eventgenerator 通知所有觀察者 public function notify 具體被觀察者class event extends eventgene...

PHP 設計模式之觀察者模式

介紹現在有兩派,有的人建議使用設計模式,有的人不建議使用設計模式!這就向寫文章一樣,有的人喜歡文章按照套路走,比如敘事性質的文章,時間,地點,人物,事件。而有的人喜歡寫雜文或者散文,有的人喜歡寫詩詞!很多時候,我看設計模式的時候,有些設計模式只是吻合我的 習慣。但是你硬去套它,那麼反而適得其反。很多...

php 設計模式之觀察者模式

觀察者模式 1.抽象事件發生類 abstract class eventgenerator 對 所有 觀察者 進行 事件 通知 function notify 2.宣告具體事件類 class event extends eventgenerator 3.宣告 乙個 觀察者 介面 inte ce ob...