观察者模式概念
观察者模式(有时又被称为发布(publish )-订阅(Subscribe)模式、模型-视图(View)模式、源-收听者(Listener)模式或从属者模式),在此种模式中,当一个对象状态发生改变时,依赖它的对象全部会收到通知,并自动更新。
使用场景
一个事件发生以后,要执行一连串更新操作,传统编程方法就是在事件的代码之后直接加入处理逻辑,当更新的逻辑增多之后,代码会变得难以维护,这种方式是耦合的,侵入式的,增加新的逻辑需要修改事件主体的代码。观察者模式实现了低耦合非侵入式的通知与更新机制。
实现方式
从根本上说,该模式必须包含两个角色:观察者和被观察对象。观察者和被观察者之间存在“观察”的逻辑关联,当被观察者发生改变的时候,观察者就会观察到这样的变化。
观察者模式实例
observers[] = $observer;
}
function notify()
{
foreach($this->observers as $observer)
{
$observer->update();
}
}
}
class ConcreteObservable extends Observable{
function trigger()
{
$this->notify();
}
}
class Observer1 implements Observer{
function update($event_info = null){
echo "action one";
}
}
class Observer2 implements Observer{
function update($event_info = null){
echo "action two";
}
}
$event = new ConcreteObservable();
//添加观察者
$event->addObserver(new Observer1);
$event->addObserver(new Observer2);
$event->trigger();