php 八大设计模式-观察者模式

定义:

观察者模式(Observer),当一个对象状态发生变化时,依赖它的对象全部会收到通知,并自动更新。

 

目的:

一个事件发生后,要执行一连串更新操作。传统的编程方式,就是在事件的代码之后直接加入处理的逻辑。当更新的逻辑增多之后,代码会变得难以维护。这种方式是耦合的,侵入式的,增加新的逻辑需要修改事件的主体代码。

 

场景:

观察者模式通常用在实时事件处理系统,组件间解耦,数据库驱动的消息队列。如登录(时间,次数,用户信息,日志) 创建订单(系统消息,短信,日志)

 

优点:

观察者模式实现了低耦合,非侵入式的通知与更新机制。

 

abstract class EventGenerator {
    private $observers = array();

    public function addObserver(Observer $observer){
        $this->observers[]=$observer;
    }

    public function notify(){
        foreach ($this->observers as $observer){
            $observer->update();
        }
    }
}

class Event extends EventGenerator {
    public function triger(){
        echo "Event<br>";
    }
}

interface Observer{
    public function update();//这里就是在事件发生后要执行的逻辑
}

class Observer1 implements Observer {
    function update(){
        echo "逻辑1<br>";
    }
}
class Observer2 implements Observer{
    function update(){
        echo "逻辑2<br>";
    }
}
$event = new Event();
$event->addObserver(new Observer1());
$event->addObserver(new Observer2());
$event->triger();
$event->notify();

 

运行结果:

 

posted @ 2021-06-10 08:58  方达达  阅读(152)  评论(0编辑  收藏  举报