您好,欢迎访问一九零五行业门户网

PHP中什么是观察者模式?如何运用?

对于观察者模式,我们可能并不是那么耳熟闻详,它是一种事件系统,意味着这一模式允许某个类观察另一一个类的状态,当被观察的类状态发生改变的时候,观察类可以收到通知并且做出相应的动作;观察者模式提供了避免组件之间紧密耦合的另一种方法;因此我们就一起来本篇文章讨论什么是观察者模式吧!
相关推荐:php中什么是工厂模式以及工厂方法模式?
观察者:
它是一种事件系统,意味着这一模式允许某个类观察另一一个类的状态,当被观察的类状态发生改变的时候,观察类可以收到通知并且做出相应的动作;观察者模式提供了避免组件之间紧密耦合的另一种方法;
我们还是以代码为例,我们新建一个文件,然后定义一个类,然后在类里面写入一个成员属性,他是一个数组用来存放观察者,紧接着我们在定义一个方法,这个方法是用来存放观察者和添加观察者的,当被观察者做出行为的时候,让观察者得到通知,并且做出一定反应,代码为例:
<?phpclass man{//用来存放观察者protected $observers = [];//添加观察者方法function addobserver($observer){ $this->observers[]=$observer;}//花钱方法function buy(){//当被观察者做出这个行为的时候,让观察者得到通并且做出一-定的反应foreach ($this->observers as $girl) { $girl->pome();}}}class girlfriend{function pome(){echo'我只明白一件事,爱一个人,是那么痛苦<br />';}}//创建对象$xiaoming = new man();$xiaohua =new girlfriend();$xiaoli = new girlfriend();//添加观察者$xiaoming->addobserver( $xiaohua); $xiaoming->addobserver($xiaoli);$xiaoming->buy();
运行结果如下:
有添加观察者这样一个方法,那就有删除观察者的方法,因此我们还要添加一个删除观察者的方法,
function delobserver($observer){//查找对应值在数组中的键$key = array_search($observer,$this->observers);//根据键删除值,并且数组重新索引array_splice($this->observers, $key, 1);}}
//删除
$xiaoming->delobserver( $xiaohua);
代码如下:
推荐学习:《php视频教程》
以上就是php中什么是观察者模式?如何运用?的详细内容。
其它类似信息

推荐信息