php 设计模式 - 观察者模式

1,469 阅读1分钟
原文链接: www.36nu.com

观察者模式概念

观察者模式(有时又被称为发布(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();