乐趣区

关于设计模式: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";}
}
退出移动版