php怎么设计状态模式(php设计模式之观察者模式定义与用法经典示例)
类别:编程学习 浏览量:934
时间:2021-10-20 08:18:32 php怎么设计状态模式
php设计模式之观察者模式定义与用法经典示例本文实例讲述了php设计模式之观察者模式定义与用法。分享给大家供大家参考,具体如下:
|
<?php /** * @desc 利用观察者模式,实现不同用户进入显示不同的内容 * 1.主题 * 2.观察者接口 * 3.观察者 * ***/ interface Observer{ //添加观察者对象 public function attach( $observer ); //删除观察者对象 public function detach( $observer ); //执行观察者需要执行的方法 public function doIt(); } class User implements Observer{ public $obj = []; /* *@desc 传递的对象不在存储的obj对象中则将对象存储到obj中 */ public function attach( $observer ){ if (!in_array( $observer , $this ->obj)){ $this ->obj[] = $observer ; } } /** * @desc 取消观察者观察 * **/ public function detach( $observer ){ $key = array_search ( $observer , $this ->obj); if ( $key ){ unset( $this ->obj[ $key ]); } } /*** * @desc 获取所有被观察者的对象,执行观察 * **/ public function doIt(){ if (! empty ( $this ->obj)){ foreach ( $this ->obj as $v ){ $v ->active(); } } } } /** * @desc 观察者接口 * **/ interface obsUser{ public function active(); } /* * @实现零售店用户实现方法类 * **/ class storeUser implements obsUser{ public function active(){ echo "我是零售店用户\n" ; } } /** * @desc 实现经销商用户方法类 * **/ class supplierUser implements obsUser{ public function active(){ echo "我是经销商用户\n" ; } } /* * 实例化观察者接口类 * **/ $user = new User(); //添加门店用户类到观察者对象 $user ->attach( new storeUser()); //添加经销商用户类到观察者对象 $user ->attach( new supplierUser()); //监控观察者动作并输出结果 $user ->doIt(); |
运行结果:
我是零售店用户
我是经销商用户
希望本文所述对大家PHP程序设计有所帮助。
原文链接:https://www.cnblogs.com/lisqiong/p/6574984.html
您可能感兴趣
- php怎么引用文件(php引用和拷贝的区别知识点总结)
- php开启curl(解决PHP使用CURL发送GET请求时传递参数的问题)
- 常见的php五大运行模式详解(php设计模式之职责链模式定义与用法经典示例)
- php100种算法(php实现的生成排列算法示例)
- php防sql注入(万能密码的SQL注入漏洞其PHP环境搭建及防御手段)
- 零基础学php好吗(零基础php编程好学吗)
- php数据类型图解(php使用filter_var函数判断邮箱,url,ip格式示例)
- nginx 怎么搭建web服务器(Linux+Nginx+Php架设高性能WEB服务器)
- php7用什么替代mysql(mysqli扩展无法在PHP7下升级问题的解决)
- redis在php中的使用(PHP+Redis开发的书签案例实战详解)
- php面向对象运用场景(PHP面向对象类型约束用法分析)
- php如何定时执行某项(php解决crontab定时任务不能写入文件问题的方法分析)
- php wamp 环境搭建(wamp服务器访问php非常缓慢的解决过程)
- php实现redis消息队列(redis+php实现微博三微博列表功能详解)
- php列表怎么用(PHP开启目录引索+fancyindex漂亮目录浏览带搜索功能)
- thinkphp5.1插件实现(Thinkphp5.0框架使用模型Model的获取器、修改器、软删除数据操作示例)
- 元宵晚会槽点多,芒果台上来就假唱,岳云鹏不说相声改评书了(元宵晚会槽点多)
- 岳云鹏跟凤凰传奇谈心,说出了人生中最重要的三个人,这才成功(岳云鹏跟凤凰传奇谈心)
- 爱情可以当饭吃吗(爱情能当饭吃吗)
- Top 3 JSHS《运动与健康科学 英文 》跻身SCI体育学期刊世界前三(Top3JSHS运动与健康科学)
- 体坛传媒LOGO全新升级,多元发展迈出坚实步伐(体坛传媒LOGO全新升级)
- 超撩人治愈的绝美水彩,原来出自她之手 一笔一画令无数人沉醉(超撩人治愈的绝美水彩)
热门推荐
- phpstudy服务器怎么设置(phpstudy2018 访问目录服务权限问题)
- python开启两个线程(Python开启线程,在函数中开线程的实例)
- 数据库docker技术(总结Docker不适合部署数据库的7大原因)
- zabbix基本监控配置(zabbix使用教程+受监控服务器的添加安装教程)
- web服务器搭建自己的网站(单台web服务器如何尽可能的提高网站性能)
- xampp安装后启动apache弹出对话框(XAMPP下使用顶级域名绑定虚拟主机的配置方法和示例)
- html5炫酷代码(HTML5超炫酷粒子效果的进度条的实现示例)
- 查看mysql索引缓存(MySQL查询缓存的小知识)
- linux常用的参数类型和参数代码(浅析Linux resolv.conf)
- mac更改mysql密码(Mac下mysql 8.0.22 找回密码的方法)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9