php设计模式(六)观察者模式
作者:
mafa1993 | 来源:发表于
2022-07-11 20:56 被阅读0次
观察者模式
- 当一个对象状态发生改变时,依赖他的对象全部会受到通知,并自动更新
- 例如:一个事件发生后,要执行一连串的更新操作,传统的为在更新后,写一些业务处理逻辑,代码难以维护,耦合的,新增逻辑需要改变主体结构
- 观察者模式实现了耦合,非侵入式的通知和更新机制
// 传统方式
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
网友评论