
//观察者模式 //事件触发类 abstract class EventGenerator{ private $observers = array();//定义数组 function addObserver(Observer $observer){ //方法把对象存入数组 $this->observers[]=$observer;//方法把对象存入数组 } function notify(){//方法 foreach ($this->observers as $observer){//循环自身数组,每个数组是对象 $observer->update();//调用对象自身的方法 } } } //观察者接口 interface Observer{ function update();//这里就是在事件发生后要执行的逻辑 } //一个实现了EventGenerator类的类,用于具体定义某个发生的事件 class Event extends EventGenerator{ function triger(){ echo "Event<br>"; } } class Observer1 implements Observer{ function update(){ echo "逻辑1<br>"; } } class Observer2 implements Observer{ function update(){ echo "逻辑2<br>"; } } $event = new Event(); //new Event类,Event继承了EventGenerator $event->addObserver(new Observer1());//调用继承的EventGenerator方法,参数对象,写入observers数组 $event->addObserver(new Observer2());//调用继承的EventGenerator方法,参数对象,写入observers数组 $event->triger();//调用Event自身具有的方法输出"Event<br>"; $event->notify();//调用继承的EventGenerator方法,循环数组,里面是对象,对象调用$observer->update();输出自身的update方法文章来源: php 观察者模式
人吐槽 | 人点赞 |
发表评论