千家信息网

php设计模式中观察者模式怎么用

发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,这篇文章将为大家详细讲解有关php设计模式中观察者模式怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。观察者模式:定义对象间一种一对多的依赖关系,当一个对象的状
千家信息网最后更新 2026年11月04日php设计模式中观察者模式怎么用

这篇文章将为大家详细讲解有关php设计模式中观察者模式怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

观察者模式:定义对象间一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新。
观察者类:
1.抽象主题角色:主题角色将所有对观察者对象的引用保存在一个集合中,每个主题可以任意多个观察者。抽象主题提供了增加和删除观察者对象的接口。
2.抽象观察者角色:为所有的具体观察者定义一个接口,在观察的主题发生改变时更新自己
3.具体主题角色:存储相关状态到具体观察者对象,当具体主题的内部状态发生改变时,给所有登记过的观察者发出通知。具体主题角色通常用一个具体子类实现。
4.具体观察者角色:存储一个具体主题对象,存储相关状态,实现抽象观察者角色所要求的更新接口,以使得其自身状态和主题的状态保持一致
作用:
1. 观察者模式的耦合度较小
2.支持广播通信

复制代码 代码如下:


//抽象主题
interface Subject{
public function attach($observer);
public function detach($observer);
public function notifyObservers();
}
//具体主题
class ConcreateSubject implements Subject{
private $_observers;
public function __construct(){
$this->_observers = array();
}

public function attach($observer){
return array_push($this->_observers,$observer);
}

public function detach($observer){
$index = array_search($observer,$this->_observers);
if($index === false || !array_key_exists($index,$this->_observers)){
return false;
}
unset($this->_observer[$index]);
return true;
}

public function notifyObservers(){
if(!is_array($this->_observers)){
return false;
}
foreach($this->_observers as $observer){
$observer->update();
}
return true;
}
}

//抽象观察者
interface Observer{
public function update();
}
//具体观察者
class ConcreteObserver implement Observer{
private $_name;
public function __construct($name){
$this->_name = $name;
}

public function update(){
echo 'Observer',$this->_name.'has notified
';
}
}

//客户端
class Client{
public static function main(){
$subject = new ConcreteSubject();
//新增第一个观察者
$observer1 = new ConcreteObserver('Martin');
$subject->attach($observer1);
//通知
$subject->notifyObservers();

//新增第二个观察者
$observer2 = new ConcreteObserver('jaky');
$subject->attach($observer2);
//通知
$subject->notifyObservers();

//删除观察者1
$subject->deatch($observer1);
//通知
$subject->notifyObservers();
}
}

Client::main();
?>

关于"php设计模式中观察者模式怎么用"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

观察 观察者 主题 对象 角色 模式 状态 接口 篇文章 存储 更新 设计模式 设计 代码 更多 不错 实用 一致 作用 内容 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 河南云网互联网络科技有限公司 中关村互联网科技集团 广州百单互联网科技有限公司 互联网科技与金融科技 互联网与新科技 腾讯科技 互联网女皇 联恩商钥互联网科技有限公司 老年人脱离互联网科技的作文 宁夏众和广鑫互联网科技有限公司 互联网科技革命什么开始 乌苏新华互联网科技做什么的 民营互联网公司国防科技 卓翼科技产业互联网合作 从那以后互联网科技有限公司 同城互联网络科技 互联网科技和医药行业 深圳互联网科技园地址 盐城市攀科互联网科技有限公司 数字科技和互联网金融哪个好 恒生科技互联网指数十大成分股 今日互联网科技 上海挚品互联网科技 期待互联网科技 九亚互联网科技 深圳艾佳互联网科技 速维有品互联网信息科技(苏州)有限公司 群盈汇互联网科技有限公司 互联网与数字科技关系 互联网科技对化妆品行业 互联网科技大佬云集
0