PHP设计模式 观察者模式(Observer)
定义
当一个对象状态发生改变时,依赖它的对象全部会收到通知,并自动更新。
模式要点
Event:事件
Trigger() 触发新的事件
abstract EventGenerator 事件产生者
Function addObserver(Observer $observer) 添加事件
Function notify() 通知事件产生了
Interface Observer 观察者
Function update($event_info=null) 执行一些更新的操作
$event_info 事件的一些信息
代码示例
<?php /** * 观察者模式 * User: pyzn * Date: 2016-03-21 * Time: 17:35 */ /** * Class EventGenerator * 观察者模式的核心,主要是对事件进行约束,保证事件中存在addObserver、notify方法 */ abstract class EventGenerator { private $observers = array(); public function addObserver(Observer $observer) { $this->observers[] = $observer; } public function notify() { foreach ($this->observers as $observer) { $observer->update(); } } } /** * Class Event 具体事件类,这里映射程序中增加的某个事件 * 其继承自事件产生者基类 */ class Event extends EventGenerator { /** * 执行一个事件,并进行通知 */ public function trigger() { echo "事件发生<br />"; $this->notify(); } } /** * Interface Observer * 对事件进行约束,保证事件中有update操作方法 */ interface Observer { function update($event_info = null); } class Observer1 implements Observer { function update($event_info = null) { // TODO: Implement update() method. echo "逻辑1<br />"; } } class Observer2 implements Observer { function update($event_info = null) { // TODO: Implement update() method. echo "逻辑2<br />"; } } $event = new Event(); $event->addObserver(new Observer1()); $event->addObserver(new Observer2()); $event->trigger();