当前位置:首页 > 日记 > 正文

观察器模式在PHP设计模式中的应用

观察器模式在PHP设计模式中的应用
观察模式:定义对象之间的一对多依赖关系。当对象的状态发生变化时,所有依赖对象都将自动通知和更新。
观察类:
1。抽象主题角色:主题角色在一个集合中保留对观察对象的所有引用,每个主题可以是任意多个观察者。
2。抽象观察角色:为所有特定的观察者定义一个接口,并在观察到的主题变化时更新自己。
3、特定的主题角色是将相关的状态存储到特定的观察对象,并在特定主题的内部状态发生变化时通知所有注册的观察者。
4、观察者的角色是存储一个特定的主体对象,存储相关的状态,并实现抽象的观察者角色的更新接口,以保持其状态和主题状态一致。
uff1a效应
1的耦合度。观察员模式很小。
2。支持广播通信
复制代码代码如下所示:
< PHP
抽象/主题
界面主题{
公共职能附加(观察员);
公共功能分离($观察员);
公共功能notifyobservers();
}
特定主题
类concreatesubject实施主体{
私人_observers美元;
公共功能__construct(){
美元-> _observers =阵();
}

公共职能附加(观察员){
返回array_push(美元-> _observers,为观察者);
}

公共函数分离($观察者){
美元指数= array_search($观测器,美元-> _observers);
如果(美元指数=假| |!array_key_exists(美元指数,美元-> _observers)){
返回false;
}
unset(美元-> _observer { $指数});
返回true;
}

公共功能notifyobservers(){
如果(!is_array(美元-> _observers)){
返回false;
}
foreach(美元-> _observers达观测器){
观察者> >更新();
}
返回true;
}
}

抽象/观察者
界面观察{
公共功能更新();
}
/ /具体观察者
类concreteobserver实施观察{
私人_name美元;
公共功能__construct($name){
美元-> _name = $名称;
}

公共函数更新(){
echo'observer,美元-> _name通知;
}
}

客户机
客户端类{
公共静态函数main(){
为主题的新ConcreteSubject();
第一个观察者添加/添加
observer1美元=新concreteobserver('martin);
主题->附加美元(美元observer1);
通知
受美元-> notifyobservers();

第二个新观察者
observer2美元=新concreteobserver('jaky);
主题->附加美元(美元observer2);
通知
受美元-> notifyobservers();

删除观察员1
主题-> deatch美元(美元observer1);
通知
受美元-> notifyobservers();
}
}

客户::主();
>

相关文章

计算机常常有对重装系统没有响应的

计算机常常有对重装系统没有响应的

响应,重装系统,程序,电脑软件,问题: 我的电脑玩了一个小时或两小时半小时!不管你做什么,都不会对程序有任何反应。计数器已经死了,只能重新启动! 系统重做N多次,并且磁盘从新分区。是的,我两个硬盘,固态硬盘系统,请帮我分析一下这是 我的固态硬盘坏…

将空值转换为MySQL中的0的语句。

将空值转换为MySQL中的0的语句。

语句,空值,转换为,电脑软件,MySQL,复制代码代码如下所示: 选择 如果(AVG(CAI。conversionsrate)是无效的,0,AVG(CAI。conversionsrate)) 作为conversionsrate 从campaign_info CAI 在inserttime之间'2011-02-01'and '2011-02-04和googlecampaigni…

win7系统的只显示图标不显示预览的

win7系统的只显示图标不显示预览的

显示,系统,图标,解决方案,只显示,点评:Win7图片只显示图标,不显示缩略图;无论是调整小地图、地图、图片或其他类似的情况下是不显示的,想必很多朋友都遇到过,这是一个很好的解决方案,需要的朋友可以参考下 在Win7,图片只显示图标,不显示缩略图,无论…

php入门学习笔记之一

php入门学习笔记之一

学习笔记,入门,电脑软件,php,1。基本语法 在HTML代码中嵌入PHP脚本的方法是在其中编写代码。回声或打印功能用于向浏览器输出数据。回声可以接受多个参数,而打印只能接受一个。 空洞的回声(字符串arg1,{,}…串argn); PHP语法允许省略括号, 复制…

荷兰法院:在CAD中没有侵犯AutoCAD

荷兰法院:在CAD中没有侵犯AutoCAD

法院,荷兰,电脑软件,CAD,AutoCAD,最近,在希望国内CAD +和美国Autodesk(Autodesk)公司AutoCAD知识产权纠纷很受欢迎的情况下,网络也展开了各种猜测。4月10日,钟望数码(广州中旺数码设计软件有限公司)发表正式声明。该案首次公布了该案的最新结果:荷…

黑色圣徒的4游戏零冷却任务没有回

黑色圣徒的4游戏零冷却任务没有回

解决方案,冷却,圣徒,黑色,游戏,问题: 最近玩了黑色圣徒4游戏,打了零降温任务时,没有反应,怎么回事 答案uff1a 这是一个免费的在线验证补丁问题,恢复到游戏原始文件或更新补丁。(完)…

为了解决在win7系统硬盘图标显示异

为了解决在win7系统硬盘图标显示异

图标,系统,硬盘,显示,电脑软件,点评:电脑内部的硬盘图标不正常,只有系统分区和标签,其他分区磁盘不显示标签,有时出现硬盘图标损坏问题,这里是一个很好的解决方案,可以试试操作。 Windows 7用户在我的电脑中发现,硬盘图标不正常,有时只有系统分区和…

MySQL数据库更新错误解决方案

MySQL数据库更新错误解决方案

错误解决方案,数据库更新,电脑软件,MySQL,句uff1a 更新测试集的年龄为5 where'name ' = '王莽' 顾名思义,王莽的年龄改为5岁,但结果是非常无助的。 效果的数量是0,发生了什么,语法是正确的,没有什么问题… 更改了,名字的两个引号被删除了,结…

解读猎豹移动的超级武器:清理主CM

解读猎豹移动的超级武器:清理主CM

猎豹,武器,电脑软件,CM,猎豹移动招股书显示,其每月活跃用户中63%来自海外市场,海外市场的快速增长的移动终端应用——战略相关,这是在2012年9月推出;mdash,猎豹清理大师(Clean Master,简称CM)。 根据应用程序的安妮数据,在2014年3月,猎豹清理大师是…

垃圾邮件破坏了互联网,清除垃圾,走了

垃圾邮件破坏了互联网,清除垃圾,走了

清除,互联网,垃圾邮件,走了,很长,根据安全机构的统计,十一月垃圾邮件的数量增加了35%,其中两次平均每天超过850亿次。 2007垃圾邮件的数量有可能进一步增加,中国将很快成为互联网的快速发展对垃圾邮件生产大国。Spam can only bring 6 billion…

制作Win8.1UpdateRTM托管镜教程

制作Win8.1UpdateRTM托管镜教程

教程,托管,电脑软件,UpdateRTM,点评:本文介绍了过程的Win8.1 2014 Update RTM托管系统镜像的准备,和朋友你需要知道的 准备工具:DISM工具(Win8.1系统)、UltraISO(软碟通)v9.6.1 测试平台:Windows 8.1企业版(Win8.1专业版、核心版) 升级补丁:windows8…

安装VirtualBox增强功能的详细步骤

安装VirtualBox增强功能的详细步骤

增强,步骤,安装,系统,功能,导读:本文主要介绍安装VirtualBox增强功能的详细步骤(增强)在Linux系统。Let's use it for reference 1。在菜单栏点击设备-;>分发CD-ROM ndash;>选择一个虚拟光盘,VirtualBox安装目录下找到vboxguestadditions.iso,加…