PHP观察者模式实现,php怎么实现观察者模式

本文介绍了PHP中观察者模式的实现方式。首先创建主题和观察者的接口,然后通过Action类作为主题,Cat、Dog和People类作为观察者,实现了观察者向主题注册并在主题通知时执行各自的操作。这种设计模式降低了耦合度,使得代码更加灵活。
摘要由CSDN通过智能技术生成

php实现观察者模式的方法:首先创建一个PHP示例文件;然后实现观察者向主题注册;最后对注册树进行遍历,让每个对象实现其接口提供的操作即可。

本文操作环境:windows7系统、PHP7.1版,DELL G3电脑

PHP实现观察者模式

“观察者模式”的观察者三个字信息量很大。玩过很多网络游戏的童鞋们应该知道,即便是斗地主,除了玩家,还有一个角色叫“观察者"。在我们今天他谈论的模式设计中,观察者也是如此。首先,要有一个“主题”。只有有了一个主题,观察者才能搬着小板凳儿聚在一堆。其次,观察者还必须要有自己的操作。否则你聚在一堆儿没事做也没什么意义。

从面向过程的角度来看,首先是观察者向主题注册,注册完之后,主题再通知观察者做出相应的操作,整个事情就完了。

从面向对象的角度来看,主题提供注册和通知的接口,观察者提供自身操作的接口。(这些观察者拥有一个同一个接口。)观察者利用主题的接口向主题注册,而主题利用观察者接口通知观察者。耦合度相当之低。

如何实现观察者注册?通过前面的注册者模式很容易给我们提供思路,把这些对象加到一棵注册树上就好了嘛。如何通知?这就更简单了,对注册树进行遍历,让每个对象实现其接口提供的操作

// 主题接口

interface Subject{

public function register(Observer $observer);

public function notify();

}

// 观察者接口

interface Observer{

public function watch();

}

// 主题

class Action implements Subject{

public $_observers=array();

public function register(Observer $observer){

$this->_observers[]=$observer;

}

public function notify(){

foreach ($this->_observers as $observer) {

$observer->watch();

}

}

}

// 观察者

class Cat implements Observer{

public function watch(){

echo "Cat watches TV


";

}

}

class Dog implements Observer{

public function watch(){

echo "Dog watches TV


";

}

}

class People implements Observer{

public function watch(){

echo "People watches TV


";

}

}

// 应用实例

$action=new Action();

$action->register(new Cat());

$action->register(new People());

$action->register(new Dog());

$action->notify();

【推荐学习:《PHP视频教程》】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值