1 /** 2 ?* 事件产生类 3 ?* Class EventGenerator 4 ?*/ 5 abstract class EventGenerator 6 { 7 ????private $ObServers = []; 8 ?9 ????//增加观察者10 ????public function add(ObServer $ObServer)11 ????{12 ????????$this->ObServers[] = $ObServer;13 ????}14 15 ????//事件通知16 ????public function notify()17 ????{18 ????????foreach ($this->ObServers as $ObServer) {19 ????????????$ObServer->update();20 ????????}21 ????}22 23 }24 25 /**26 ?* 观察者接口类27 ?* Interface ObServer28 ?*/29 interface ObServer30 {31 ????public function update($event_info = null);32 }33 34 /**35 ?* 观察者136 ?*/37 class ObServer1 implements ObServer38 {39 ????public function update($event_info = null)40 ????{41 ????????echo "观察者1 收到执行通知 执行完毕!\n";42 ????}43 }44 45 /**46 ?* 观察者247 ?*/48 class ObServer2 implements ObServer49 {50 ????public function update($event_info = null)51 ????{52 ????????echo "观察者2 收到执行通知 执行完毕!\n";53 ????}54 }55 56 /**57 ?* 事件58 ?* Class Event59 ?*/60 class Event extends EventGenerator61 {62 ????/**63 ?????* 触发事件64 ?????*/65 ????public function trigger()66 ????{67 ????????//通知观察者68 ????????$this->notify();69 ????}70 }71 72 //创建一个事件73 $event = new Event();74 //为事件增加旁观者75 $event->add(new ObServer1());76 $event->add(new ObServer2());77 //执行事件 通知旁观者78 $event->trigger();
php设计模式之观察模式
原文地址:https://www.cnblogs.com/chinwe/p/9431104.html