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
您可能感兴趣
- phpcurl调用本地函数(PHP使用CURL实现下载文件功能示例)
- linux如何安装php7.1.5环境(vmware linux系统安装最新的php7图解)
- 宝塔面板phpMyAdmin错误教程(宝塔面板phpMyAdmin报错502 Bad Gateway nginx解决方法)
- thinkphp静态怎么设置(浅谈thinkphp的nginx配置,以及重写隐藏index.php入口文件方法)
- php验证码思路(PHP实现字母数字混合验证码功能)
- phpstudy中php用什么版本(phpstudy是什么?phpstudy有什么用?)
- php判断类的属性的修饰(PHP whois查询类定义与用法示例)
- php中把字符串分开的函数(PHP字符串中抽取子串操作实例分析)
- php框架初始化教程学习(PHP从零开始打造自己的MVC框架之类的自动加载实现方法详解)
- phpredis高级用法(PHP Redis扩展无法加载的问题解决方法)
- php怎么根据字符串长度设置(php常用字符串长度函数strlen与mb_strlen用法实例分析)
- php常见加密方法(PHP实现的AES 128位加密算法示例)
- thinkphp 多维度展示数据(Thinkphp自定义生成缩略图尺寸的方法)
- python与php比较(浅谈php调用python文件)
- php查找文件存在(php判断目录存在的简单方法)
- php构成方法的关键字是(PHP中的self关键字详解)
- 直播带货能赚到很多钱吗(直播带货能赚到很多钱吗现在)
- 做网红真的很能赚钱吗(做网红真的很能赚钱吗)
- 10句英语常用(英语常用900句)
- 爱情能当饭吃吗(爱情能当饭吃吗说说)
- 白T恤穿法(白t恤)
- 你怎么忘了是说先爱我(你怎么忘了如何爱我)
热门推荐
- pythonbug生成图片(python实现海螺图片的方法示例)
- html5新的表单元素新的特性(HTML5表单验证特性知识点小结)
- js基础入门到高级教程(浅谈如何循序渐进的学好JS)
- php开发微信小程序后台步骤流程(基于PHP实现微信小程序客服消息功能)
- sqlserver分页数据重复(SQL Server 在分页获取数据的同时获取到总记录数)
- 阿里云的自带mysql怎么开启(阿里云云服务器mysql密码找回的方法)
- css3各个动画效果(使用css3制作齿轮loading动画效果)
- 阿里云ecs所有文件备份到本地(阿里云ECS服务器的系统重装、快照备份、恢复数据回滚教程)
- python sql注入怎么避免(Python实现SQL注入检测插件实例代码)
- python与mysql的联系(MySQL和Python交互的示例)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9