php 观察者模式

//观察者模式
//事件触发类
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 观察者模式

人吐槽 人点赞

猜你喜欢

发表评论

用户名: 密码:
验证码: 匿名发表

你可以使用这些语言

查看评论:php 观察者模式