简述观察者模式

分类:PHP, 发布于 2018-04-27,浏览(614),评论(0)

观察者模式是对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。

image.png

DEMO:

/**
 * Class EventGenerator
 */
abstract class EventGenerator
{
    private $ObServers = [];

    //增加观察者
    public function add(ObServer $ObServer) {
        $this->ObServers[] = $ObServer;
    }

    //事件通知
    public function notify() {
        foreach ($this->ObServers as $ObServer) {
            $ObServer->update();
        }
    }
}

interface ObServer
{
    public function update($event_info = null);
}

class ObServer1 implements ObServer {
    public function update($event_info=null) {
        echo "ObServer1";
    }
}

class ObServer2 implements ObServer {
    public function update($event_info=null) {
        echo "ObServer2";
    }
}

class Event extends EventGenerator {
    public function trigger() {
        $this->notify();
    }
}

$event = new Event();
$event->add(new ObServer1());
$event->add(new ObServer2());
$event->trigger();


评论: