PHP实现的观察者模式实例


Posted in PHP onJune 21, 2017

本文实例讲述了PHP实现的观察者模式。分享给大家供大家参考,具体如下:

<?php
  //定义观察者调用接口
  class transfer{
    protected $_observers = array();
    //注册对象
    public function register($sub){
      $this->_observers[] = $sub;
    }
    //外部统一调用
    public function trigger(){
      if(!empty($this->_observers)){
        foreach($this->_observers as $observer){
          $observer->update();
        }
      }
    }
  }
  //观察者接口
  interface obserable{
    public function update();
  }
  //实现观察者
  class listen implements obserable{
    public function update(){
      echo 'now first time you need to do listen<br/>';
    }
  }
  class read implements obserable{
    public function update(){
      echo 'now first time you need to read<br/>';
    }
  }
  class speak implements obserable{
    public function update(){
      echo 'now first time you need to speak<br/>';
    }
  }
  class write implements obserable{
    public function update(){
      echo 'now first time you need to write<br/>';
    }
  }
  $transfer = new transfer();
  $transfer->register(new listen());
  $transfer->register(new read());
  $transfer->register(new speak());
  $transfer->register(new write());
  $transfer->trigger();

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
解析thinkphp基本配置 convention.php
Jun 18 PHP
php查看请求头信息获取远程图片大小的方法分享
Dec 25 PHP
解决PhpMyAdmin中导入2M以上大文件限制的方法分享
Jun 06 PHP
用PHP代替JS玩转DOM的思路及示例代码
Jun 15 PHP
php防止伪造的数据从URL提交方法
Jun 27 PHP
PHP函数实现分页含文本分页和数字分页
Oct 23 PHP
CentOS 安装 PHP5.5+Redis+XDebug+Nginx+MySQL全纪录
Mar 25 PHP
php序列化函数serialize() 和 unserialize() 与原生函数对比
May 08 PHP
PHP简单实现数字分页功能示例
Aug 24 PHP
简单的pgsql pdo php操作类实现代码
Aug 25 PHP
cakephp2.X多表联合查询join及使用分页查询的方法
Feb 23 PHP
Laravel中任务调度console使用方法小结
May 07 PHP
PHP构造二叉树算法示例
Jun 21 #PHP
ThinkPHP删除栏目(实现批量删除栏目)
Jun 21 #PHP
php基于SQLite实现的分页功能示例
Jun 21 #PHP
PHP面向对象之领域模型+数据映射器实例(分析)
Jun 21 #PHP
PHP基于PDO实现的SQLite操作类【包含增删改查及事务等操作】
Jun 21 #PHP
老生常谈PHP面向对象之标识映射
Jun 21 #PHP
PHP封装的PDO数据库操作类实例
Jun 21 #PHP
You might like
PHP 中的类
2006/10/09 PHP
谈谈新手如何学习PHP 默默经典版本
2009/08/04 PHP
ThinkPHP模板Volist标签嵌套循环输出多维数组的方法
2016/03/23 PHP
Laravel框架表单验证操作实例分析
2019/09/30 PHP
JQuery中判断一个元素下面是否有内容或者有某个标签的判断代码
2012/02/02 Javascript
别了 JavaScript中的isXX系列
2012/08/01 Javascript
让table变成exls的示例代码
2014/03/24 Javascript
js设置cookie过期当前时间减去一秒相当于立即过期
2014/09/04 Javascript
用javascript关闭本窗口技巧小结
2014/09/05 Javascript
AngularJS实现元素显示和隐藏的几个案例
2015/12/09 Javascript
jQuery中通过ajax调用webservice传递数组参数的问题实例详解
2016/05/20 Javascript
vue插件tab选项卡使用小结
2016/10/27 Javascript
JS Select下拉框(支持输入模糊查询)
2017/02/04 Javascript
vue实现底部菜单功能
2018/07/24 Javascript
javascript使用链接跨域下载图片
2019/11/01 Javascript
element-ui 实现响应式导航栏的示例代码
2020/05/08 Javascript
element中el-container容器与div布局区分详解
2020/05/13 Javascript
JS算法教程之字符串去重与字符串反转
2020/12/15 Javascript
[02:13] 完美世界DOTA2联赛PWL DAY5集锦
2020/11/03 DOTA
浅谈python实现Google翻译PDF,解决换行的问题
2018/11/28 Python
Python合并同一个文件夹下所有PDF文件的方法
2019/03/11 Python
Python高级特性之闭包与装饰器实例详解
2019/11/19 Python
Mac PyCharm中的.gitignore 安装设置教程
2020/04/16 Python
Python-opencv实现红绿两色识别操作
2020/06/04 Python
python 求两个向量的顺时针夹角操作
2021/03/04 Python
CSS3 选择器 伪类选择器介绍
2012/01/21 HTML / CSS
canvas实现高阶贝塞尔曲线(N阶贝塞尔曲线生成器)
2018/01/10 HTML / CSS
美国知名眼镜网站:Target Optical
2020/04/04 全球购物
C# Debug和Testing相关面试题
2015/10/25 面试题
Linux文件系统类型
2012/09/16 面试题
会计电算化应届生求职信
2013/11/03 职场文书
客户接待方案
2014/02/26 职场文书
美食节策划方案
2014/05/26 职场文书
七夕情人节问候语
2015/11/11 职场文书
浅谈:电影《孔子》观后感(范文)
2019/10/14 职场文书
Window server中安装Redis的超详细教程
2021/11/17 Redis