PHP 观察者模式

观察者模式,当一个对象状态发送改变时,依赖它的对象全部会收到通知,并自动更新。观察者模式实现了低耦合,非侵入式的通知与更新机制

***  index.php  ***
define('BASEDIR',__DIR__);
include BASEDIR.'/Common/Loader.php';
spl_autoload_register('\\Common\\Loader::autoload');
use Server\EventGenerator;
use Server\Observer;

class Event extends EventGenerator{
    function trigger()    {
        echo "start<br/>\n";
        $this->notify();
    }
}
class Observer1 implements Observer{
    function update($event_info = null)    {
        echo "逻辑1<br />\n";
    }
}
class Observer2 implements Observer{
    function update($event_info = null)    {
        echo "逻辑2<br />\n";
    }
}

$event = new Event;
$event->addObserver(new Observer1);  //只需按接口新增观察者即可,不用修改原程序逻辑
$event->addObserver(new Observer2);
$event->trigger();  //start  逻辑1  逻辑2
***  EventGenerator.php  ***
namespace Server;
abstract class EventGenerator {
    private $observers = array();
    //参数加定义,这里表示 必须是Observer接口的对象
    function addObserver(Observer $observer)    {
        $this->observers[] = $observer;
    }
    function notify()    {
        foreach($this->observers as $observer)        {
            $observer->update();
        }
    }
} 
***  Observer.php  ***
namespace Server;
interface Observer{
    function update($event_info = null);
}
    原文作者:weixin_33943347
    原文地址: https://blog.csdn.net/weixin_33943347/article/details/88486246
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞