本文實例講述了PHP觀察者模式定義與用法。分享給大家供大家參考,具體如下:
我理解的觀察者模式就是,當我們觸發一個事件的時候,想要把這個操作告訴給我想要告訴的對象,讓他們都執行這個操作,就是將他們綁定到這個事件下。
1.定義一個基類(用于添加觀察者也就是我想要通知的對象,還有通知觀察者)
EventGenerator.php
<?phpabstract class EventGenerator{ //存儲觀察者,因為可以有多個要通知的對象,所以是一個數組 private $observers = array(); //添加觀察者,也就是我想要通知的對象 public function addObserver($observer) { $this->observers[] = $observer; } //通知觀察者 public function notify() { //取出所有的對象去執行操作 foreach($this->observers as $observer) { //這里我寫一個update方法,這里就要求我所有的通知對象必須要有update操作,所以一會我會定義一個借口,讓所有的觀察者強制實現這個方法 $observer->update(); } }}?>
定義接口文件,讓所有觀察者實現update方法Observer.php
<?phpinterface Observer{ function update();}?>
定義實現觀察者模式的文件Event.php
<?phpheader('Content-Type:text/html;charset=utf-8');define('BASEDIR', __DIR___);require 'Config.php';spl_autoload_register('Config::autoload');//定義事件類繼承基類class Event extends EventGenerator{ //當觸發這個事件的時候通知所有的觀察者 public function trigger() { echo '我要開始更新了?。?lt;br/>/n'; //基類的通知方法 $this->notify(); }}//添加觀察者1class Observer1 implements Observer{ public function update() { echo '我是觀察者1,我收到你的通知了!我要干我該干的了!<br/>/n'; }}//添加觀察者2class Observer2 implements Observer{ public function update() { echo '我是觀察者2,我收到你的通知了!我要干我該干的了!<br/>/n'; }}//下面就要開始測試了!$event = new Event();//添加觀察者到這個事件里$event->addObserver(new Observer1);$event->addObserver(new Observer2);//執行trigger操作$event->trigger();//這時候就會顯示!//我要開始更新了??!//我是觀察者1,我收到你的通知了!我要干我該干的了!//我是觀察者2,我收到你的通知了!我要干我該干的了!?>
希望本文所述對大家PHP程序設計有所幫助。
新聞熱點
疑難解答
圖片精選