您的位置:首页 > 编程语言 > PHP开发

PHP设计模式 观察者模式(Observer)

2016-03-22 11:49 996 查看

定义

当一个对象状态发生改变时,依赖它的对象全部会收到通知,并自动更新。

模式要点

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();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: