设计模式-观察者模式
当一个状态发生改变时,依赖它的对象全部会收到通知,并自动更新。
我们将要处理的逻辑封装成多个观察者,并且注入到时间管理器中,由其统一来触发更新。
事件管理器
<?php
namespace Imooc;
class Event extends EventGenerator
{
function trigger()
{
echo 'Event'.PHP_EOL;
$this->notify();
}
}
<?php
namespace Imooc;
abstract class EventGenerator
{
private $observers = [];
function addObserver(Observer $observer)
{
array_push($this->observers, $observer);
}
function notify()
{
if(!empty($this->observers)){
foreach($this->observers as $observer)
{
$observer->update();
}
}
}
}
观察者
<?php
namespace Imooc;
interface Observer
{
function update($event_info = null);
}
<?php
namespace Imooc;
class Observer1 implements Observer
{
function update($event_info = null)
{
echo 'Observer1'.PHP_EOL;
}
}
<?php
namespace Imooc;
class Observer2 implements Observer
{
function update($event_info = null)
{
echo 'Observer2'.PHP_EOL;
}
}
调用
$e = new \Imooc\Event();
$e->addObserver(new \Imooc\Observer1());
$e->addObserver(new \Imooc\Observer2());
$e->trigger();
07-29
07-29
07-29
07-29