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 之 没有mysql支持时的替代方案
Oct 09 PHP
libmysql.dll与php.ini是否真的要拷贝到c:\windows目录下呢
Mar 15 PHP
PHP XML数据解析代码
May 26 PHP
php图片缩放实现方法
Feb 20 PHP
win7 64位系统 配置php最新版开发环境(php+Apache+mysql)
Aug 15 PHP
thinkphp区间查询、统计查询与SQL直接查询实例分析
Nov 24 PHP
详解PHP序列化和反序列化原理
Jan 15 PHP
PHP封装curl的调用接口及常用函数详解
May 31 PHP
PHP 实现文件压缩解压操作的方法
Jun 14 PHP
thinkphp5框架前后端分离项目实现分页功能的方法分析
Oct 08 PHP
设定php简写功能的方法
Nov 28 PHP
PHP配合fiddler抓包抓取微信指数小程序数据的实现方法分析
Jan 02 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 session会话的安全性分析
2011/09/08 PHP
浅析Yii2 gridview实现批量删除教程
2016/04/22 PHP
php 类中的常量、静态属性、非静态属性的区别
2017/04/09 PHP
PHP实现的DES加密解密封装类完整实例
2017/04/29 PHP
PHP框架Laravel中使用UUID实现数据分表操作示例
2018/05/30 PHP
javascript五图轮播切换实用版
2012/08/17 Javascript
JQuery插件fancybox无法在弹出层使用左右键的解决办法
2013/12/25 Javascript
javascript日期格式化示例分享
2014/03/05 Javascript
JavaScript获取XML数据附示例截图
2014/03/05 Javascript
关于Javascript 对象(object)的prototype
2014/05/09 Javascript
jQuery动态创建html元素的常用方法汇总
2014/09/05 Javascript
以Python代码实例展示kNN算法的实际运用
2015/10/26 Javascript
JavaScript中函数表达式和函数声明及函数声明与函数表达式的不同
2015/11/15 Javascript
巧用canvas
2017/01/21 Javascript
webpack4打包vue前端多页面项目
2018/09/17 Javascript
vue使用rem实现 移动端屏幕适配
2018/09/26 Javascript
axios使用拦截器统一处理所有的http请求的方法
2018/11/02 Javascript
vue单页面实现当前页面刷新或跳转时提示保存
2018/11/02 Javascript
vue实现简单全选和反选功能
2020/09/15 Javascript
原生js实现自定义滚动条组件
2021/01/20 Javascript
python获取mp3文件信息的方法
2015/06/15 Python
利用Celery实现Django博客PV统计功能详解
2017/05/08 Python
django模板语法学习之include示例详解
2017/12/17 Python
Django中STATIC_ROOT和STATIC_URL及STATICFILES_DIRS浅析
2018/05/08 Python
从运行效率与开发效率比较Python和C++
2018/12/14 Python
python仿抖音表白神器
2019/04/08 Python
python 删除系统中的文件(按时间,大小,扩展名)
2020/11/19 Python
HTML5新特性 多线程(Worker SharedWorker)
2017/04/24 HTML / CSS
美国美发品牌:Bumble and Bumble
2016/10/08 全球购物
研讨会主持词
2014/04/02 职场文书
校长竞聘演讲稿
2014/05/16 职场文书
2016年三八节红领巾广播稿
2015/12/17 职场文书
电力安全学习心得体会
2016/01/18 职场文书
2016大学先进团支部事迹材料
2016/03/01 职场文书
SQL Server中锁的用法
2022/05/20 SQL Server
Oracle数据库事务的开启与结束详解
2022/06/25 Oracle