您好,登錄后才能下訂單哦!
小編給大家分享一下如何使用PHP實現觀察者模式,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
觀察者模式為您提供了避免組件之間緊密耦合的另一種方法。該模式非常簡單:一個對象通過添加一個方法(該方法允許另一個對象,即觀察者注冊自己)使本身變得可觀察。當可觀察的對象更改時,它會將消息發送到已注冊的觀察者。這些觀察者使用該信息執行的操作與可觀察的對象無關。結果是對象可以相互對話,而不必了解原因。
一個簡單示例是系統中的用戶列表。下面的代碼顯示一個用戶列表,添加用戶時,它將發送出一條消息。添加用戶時,通過發送消息的日志觀察者可以觀察此列表。
<?php //首先定義觀察者接口 interface IObserver { //發生變化的時候觀察者的動作 function onChange($sender,$args) ; } //定義被觀察者接口 interface IObservable { //注冊觀察者的方法 function addObserver($observer); } //定義用戶列表類,繼承被觀察者類 class UserList implements IObservable { //注冊的觀察者列表 private $_observers = array(); //添加用戶的方法 public function addCustomer($name) { foreach($this->_observers as $obs) { $obs->onChange($this,$name); } } //注冊觀察者的方法 public function addObserver($observer) { $this->_observers[] = $observer; } } //定義用戶日志類,也可以是其他的一些操作,繼承觀察者 class UserListLogger implements IObserver { //實現觀察者的方法 public function onChange($sender,$args){ //這里可以實現當觀察者檢測到觀察事件的時候定義的動作 //比方說發送歡迎郵件之類的 echo "$args added to user list\n"; } } //實例化觀察者 $userListLogger = new UserListLogger(); //實例化被觀察者 $userList = new UserList(); //注冊觀察者 $userList->addObserver($userListLogger); //注冊用戶,觀察者發生動作 $userList->addCustomer('jane');
以上是“如何使用PHP實現觀察者模式”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。