美文网首页
PHP 观察者模式

PHP 观察者模式

作者: wyc0859 | 来源:发表于2019-03-09 14:27 被阅读0次

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

    ***  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);
    }
    

    相关文章

      网友评论

          本文标题:PHP 观察者模式

          本文链接:https://www.haomeiwen.com/subject/xtbspqtx.html