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 相关文章推荐
如何分别全角和半角以避免乱码
Oct 09 PHP
php 无限极分类
Mar 27 PHP
php下用cookie统计用户访问网页次数的代码
May 09 PHP
zf框架的校验器使用使用示例(自定义校验器和校验器链)
Mar 13 PHP
一个php短网址的生成代码(仿微博短网址)
May 07 PHP
ThinkPHP 404页面的设置方法
Jan 14 PHP
PHP实现将视频转成MP4并获取视频预览图的方法
Mar 12 PHP
PHP伪造来源HTTP_REFERER的方法实例详解
Jul 06 PHP
在PHP中使用FastCGI解析漏洞及修复方案
Nov 10 PHP
CodeIgniter自定义控制器MY_Controller用法分析
Jan 20 PHP
php英文单词统计器
Jun 23 PHP
Yii2中设置与获取别名的函数(setAlias和getAlias)用法分析
Jul 25 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实现的DateDiff和DateAdd时间函数代码分享
2014/08/16 PHP
微信公众平台消息接口校验与消息接口响应实例
2014/12/23 PHP
thinkphp命名空间用法实例详解
2015/12/30 PHP
php图片添加水印例子
2016/07/20 PHP
Cookie跨域问题解决方案代码示例
2020/11/24 PHP
Js 获取HTML DOM节点元素的方法小结
2009/04/24 Javascript
jquery radio 操作代码
2011/03/16 Javascript
基于jquery的滚动鼠标放大缩小图片效果
2011/10/27 Javascript
js限制textarea每行输入字符串长度的代码
2012/10/31 Javascript
使用js在页面中绘制表格核心代码
2013/09/16 Javascript
jQuery获得包含margin的outerWidth和outerHeight的方法
2015/03/25 Javascript
理解Javascript的动态语言特性
2015/06/17 Javascript
基于Javascript实现二级联动菜单效果
2016/03/04 Javascript
JS组件Bootstrap Select2使用方法解析
2016/05/30 Javascript
jQuery学习心得总结(必看篇)
2016/06/10 Javascript
node.js实现博客小爬虫的实例代码
2016/10/08 Javascript
在vscode中统一vue编码风格的方法
2018/02/22 Javascript
Vue实现PopupWindow组件详解
2018/04/28 Javascript
在vue项目中 实现定义全局变量 全局函数操作
2020/10/26 Javascript
Flask框架的学习指南之开发环境搭建
2016/11/20 Python
Python并发:多线程与多进程的详解
2019/01/24 Python
了解不常见但是实用的Python技巧
2019/05/23 Python
简单的Python人脸识别系统
2020/07/14 Python
Python request中文乱码问题解决方案
2020/09/17 Python
多视角3D逼真HTML5水波动画
2016/03/03 HTML / CSS
HTML5 3D书本翻页动画的实现示例
2019/08/28 HTML / CSS
Fenty Beauty官网:蕾哈娜创立的美妆品牌
2021/01/07 全球购物
平面设计师的工作职责
2013/11/21 职场文书
问卷调查计划书
2014/01/10 职场文书
公务员试用期满考核材料
2014/05/22 职场文书
银行优秀员工事迹材料
2014/05/29 职场文书
中学生检讨书1000字
2014/10/28 职场文书
2015年售后服务工作总结
2015/04/25 职场文书
2015初中团委工作总结
2015/07/28 职场文书
《帝国时代4》赛季预告 新增内容编译器可创造地图
2022/04/03 其他游戏
win10如何开启ahci模式?win10开启ahci模式详细操作教程
2022/07/23 数码科技