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 相关文章推荐
十天学会php之第六天
Oct 09 PHP
关于BIG5-HKSCS的解决方法
Mar 20 PHP
Drupal 添加模块出现莫名其妙的错误的解决方法(往往出现在模块较多时)
Apr 18 PHP
php数组函数序列之array_search()- 按元素值返回键名
Nov 04 PHP
php引用计数器进行垃圾收集机制介绍
Sep 19 PHP
php pki加密技术(openssl)详解
Jul 01 PHP
php自动识别文件编码并转换为UTF-8的方法
Jun 12 PHP
thinkPHP自动验证、自动添加及表单错误问题分析
Oct 17 PHP
PHP异步进程助手async-helper
Feb 05 PHP
Laravel 5.4前后台分离,通过不同的二级域名访问方法
Oct 13 PHP
PHP的new static和new self的区别与使用
Nov 27 PHP
PHP读取文件或采集时解决中文乱码
Mar 09 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/07/08 PHP
PHPwind整合最土系统用户同步登录实现方法
2010/12/08 PHP
PHP采集静态页面并把页面css,img,js保存的方法
2014/12/23 PHP
php+mysql数据库查询实例
2015/01/21 PHP
一个简单的php路由类
2016/05/29 PHP
PHP使用xpath解析XML的方法详解
2017/05/20 PHP
PHP模型Model类封装数据库操作示例
2019/03/14 PHP
php判断数组是否为空的实例方法
2020/05/10 PHP
Javascript 面向对象之重载
2010/05/04 Javascript
js 通用订单代码
2013/12/23 Javascript
JS实现点击链接取消跳转效果的方法
2014/01/24 Javascript
node.js中的events.EventEmitter.listenerCount方法使用说明
2014/12/08 Javascript
基于JS判断iframe是否加载成功的方法(多种浏览器)
2016/05/13 Javascript
JavaScript数组push方法使用注意事项
2017/10/30 Javascript
JS实现简单的浮动碰撞效果示例
2017/12/28 Javascript
jquery根据name取得select选中的值实例(超简单)
2018/01/25 jQuery
原生JS实现瀑布流插件
2018/02/06 Javascript
JavaScript事件冒泡与事件捕获实例分析
2018/08/01 Javascript
Node.js 使用request模块下载文件的实例
2018/09/05 Javascript
js canvas实现写字动画效果
2018/11/30 Javascript
vue2.0 如何在hash模式下实现微信分享
2019/01/22 Javascript
详解小程序退出页面时清除定时器
2019/04/28 Javascript
vue+elementui 对话框取消 表单验证重置示例
2019/10/29 Javascript
Vant 在vue-cli 4.x中按需加载操作
2020/11/05 Javascript
python实现可以断点续传和并发的ftp程序
2016/09/13 Python
PyQt4实时显示文本内容GUI的示例
2019/06/14 Python
更新升级python和pip版本后不生效的问题解决
2020/04/17 Python
python 中的9个实用技巧,助你提高开发效率
2020/08/30 Python
时尚的CSS3进度条效果
2012/02/22 HTML / CSS
详解canvas.toDataURL()报错的解决方案全都在这了
2020/03/31 HTML / CSS
ZWILLING双立人法国网上商店:德国刀具锅具厨具品牌
2019/08/28 全球购物
Java如何调用外部Exe程序
2015/07/04 面试题
师范教师专业大学生职业生涯规划范文
2014/03/02 职场文书
爱护花草树木的标语
2014/06/11 职场文书
校本课程教学计划
2015/01/19 职场文书
2015年财务经理工作总结
2015/05/13 职场文书