你的位置:首页 > ASP.net教程

[ASP.net教程]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();