php设计模式(六)观察者模式

观察者模式

  1. 当一个对象状态发生改变时,依赖他的对象全部会受到通知,并自动更新
  2. 例如:一个事件发生后,要执行一连串的更新操作,传统的为在更新后,写一些业务处理逻辑,代码难以维护,耦合的,新增逻辑需要改变主体结构
  3. 观察者模式实现了耦合,非侵入式的通知和更新机制
// 传统方式 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"; } }

    推荐阅读