PHP设计模式之观察者模式
PHP设计模式之观察者模式
别人说我名字很长 发表于2年前
PHP设计模式之观察者模式
  • 发表于 2年前
  • 阅读 31
  • 收藏 3
  • 点赞 1
  • 评论 0

腾讯云 学生专属云服务套餐 10元起购>>>   

<?php

namespace Tools;

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

//观察者接口
interface Observer{
    function update($event_info=null);
}

//事件发生者
abstract class EventGenerator{
    private $observers = array();//保存所有增加的观察者

    //增加观察者
    function addObserver(Observer $observer){
        $this->observers[] = $observer;
    }

    //通知事件发生了,其他的观察者更新自己的逻辑
    function notify(){
        foreach($this->observers as $observer){
            $observer->update();
        }
    }
}

//事件
class Event extends EventGenerator{

    function trigger(){
        echo "Event<br>\n";
        //事件发生后观察者执行的操作
        $this->notify();
    }
}

//观察者1
class Observer1 implements \Tools\Observer{
    function update($event_info=null){
        echo "逻辑1<br>\n";
    }
}

//观察者2
class Observer2 implements \Tools\Observer{
    function update($event_info=null){
        echo "逻辑2<br>\n";
    }
}

$event = new Event;
$event->addObserver(new Observer1); //注入观察者1
$event->addObserver(new Observer2); //注入观察者2
$event->trigger();//触发事件



共有 人打赏支持
粉丝 53
博文 227
码字总数 83765
×
别人说我名字很长
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: