一、什么是观察者模式
当一个对象状态发生改变时,依赖它的对象会全部收到通知,并自动更新
二、观察者模式作用
实现低耦合,非侵入式的通知与更新机制,能更好的维护代码
三、具体实现
// 基类
abstract class EventGenerator
{
private $observers = [];
public function addObserver(Observer $observer) // 添加观察者
{
$this->observers[] = $observer
}
public function notify() // 发送通知
{
foreach($this->observers as $observer)
{
$observer->update();
}
}
}
// 观察者接口
interface Observer
{
public function update($event = null);
}
class Event extends EventGenerator
{
public function trigger()
{
echo "event";
$this->notify();
}
}
// 观察者1
class Observer1 implements Observer
{
public function update($enent = null)
{
echo "逻辑1";
}
}
// 观察者2
class Observer2 implements Observer
{
public function update($enent = null)
{
echo "逻辑2";
}
}
// 业务调用
$event = new Event();
$event->addObserver(new Observer1);
$event->addObserver(new Observer2);
$event->trigger();