美文网首页
php设计模式(六)观察者模式

php设计模式(六)观察者模式

作者: mafa1993 | 来源:发表于2022-07-11 20:56 被阅读0次

观察者模式

  1. 当一个对象状态发生改变时,依赖他的对象全部会受到通知,并自动更新
  2. 例如:一个事件发生后,要执行一连串的更新操作,传统的为在更新后,写一些业务处理逻辑,代码难以维护,耦合的,新增逻辑需要改变主体结构
  3. 观察者模式实现了耦合,非侵入式的通知和更新机制
// 传统方式
class Event {
    public function trigger(){
        echo "event";
        // 一般是事件发生后,在后面直接写逻辑
    }
}

$e = new Event();
//===============================


//观察者

// 事件发生着
abstract class EventGenerator {
    private $observers = [];  // 保存所有观察者
    
    public function addObserver(Observer $observer) // 增加观察者
    {
        $this->observers[] = $observer;
    }
    public function notify()  // 通知,事件发生后,通知观察者执行
    {
        foreach ($this->observers as $observer){
        // 逐个调用每个观察者的update方法
            $observer->update();
        }
    }
}

// 观察者类
interface Observer{
    public function update($event_info); // 事件发生后,需要进行的操作
}


class Event extends EventGenerator {
    public function trigger(){
        // 发生事件后,调用notify,通知所有观察者触发就可以
        $this->notify();
    }
}
$e = new Event();
$e->addObserver(new OB1());
$e->addObserver(new OB2());
$event->trigger();


class OB1 implements Observer {
    public function update (){
        echo "ob1";
    }
}

相关文章

网友评论

      本文标题:php设计模式(六)观察者模式

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