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数据库用户认证系统代码
Mar 22 PHP
PHP类中Static方法效率测试代码
Oct 17 PHP
PHP警告Cannot use a scalar value as an array的解决方法
Jan 11 PHP
php中让上传的文件大小在上传前就受限制的两种解决方法
Jun 24 PHP
解析centos中Apache、php、mysql 默认安装路径
Jun 25 PHP
php代码审计比较有意思的例子
May 07 PHP
PHP进程同步代码实例
Feb 12 PHP
php实现可运算的验证码
Nov 10 PHP
thinkPHP中钩子的使用方法实例分析
Nov 16 PHP
php实现获取农历(阴历)、节日、节气的类与用法示例
Nov 20 PHP
PHP的mysqli_thread_id()函数讲解
Jan 24 PHP
laravel admin实现分类树/模型树的示例代码
Jun 10 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 身份验证方面的函数
2009/10/11 PHP
php park、unpark、ord 函数使用方法(二进制流接口应用实例)
2010/10/19 PHP
PHP 二维数组根据某个字段排序的具体实现
2014/06/03 PHP
smarty模板引擎中变量及变量修饰器用法实例
2015/01/22 PHP
关于ThinkPHP中的异常处理详解
2018/05/11 PHP
javaScript Array(数组)相关方法简述
2009/07/25 Javascript
简单的前端js+ajax 购物车框架(入门篇)
2011/10/29 Javascript
jQuery prev ~ siblings选择器使用介绍
2013/08/09 Javascript
IE网页js语法错误2行字符1、FF中正常的解决方法
2013/09/09 Javascript
jQuery设置聚焦并使光标位置在文字最后的实现方法
2016/08/02 Javascript
js replace(a,b)之替换字符串中所有指定字符的方法
2016/08/17 Javascript
Vue动态实现评分效果
2017/05/24 Javascript
详谈javascript精度问题与调整
2017/07/08 Javascript
详解使用webpack打包编写一个vue-toast插件
2017/11/08 Javascript
利用babel将es6语法转es5的简单示例
2017/12/01 Javascript
vue 项目如何引入微信sdk接口的方法
2017/12/18 Javascript
微信公众平台 发送模板消息(Java接口开发)
2019/04/17 Javascript
JavaScript实现更换背景图片
2019/10/18 Javascript
jquery实现掷骰子小游戏
2019/10/24 jQuery
NUXT SSR初级入门笔记(小结)
2019/12/16 Javascript
微信小程序通过websocket实时语音识别的实现代码
2020/08/19 Javascript
[19:54]夜魇凡尔赛茶话会 第一期02:看图识人
2021/03/11 DOTA
python访问mysql数据库的实现方法(2则示例)
2016/01/06 Python
详解Python编程中对Monkey Patch猴子补丁开发方式的运用
2016/05/27 Python
Python 实现购物商城,含有用户入口和商家入口的示例
2017/09/15 Python
python用户评论标签匹配的解决方法
2018/05/31 Python
Python 按字典dict的键排序,并取出相应的键值放于list中的实例
2019/02/12 Python
Django处理多用户类型的方法介绍
2019/05/18 Python
python函数的万能参数传参详解
2019/07/26 Python
Python批量删除mysql中千万级大量数据的脚本分享
2020/12/03 Python
网络方面基础面试题
2012/11/16 面试题
技术总监岗位职责
2013/12/05 职场文书
物业管理委托协议(2篇)
2014/09/23 职场文书
2015年财政所工作总结
2015/04/25 职场文书
《大禹治水》教学反思
2016/02/22 职场文书
Vue vee-validate插件的简单使用
2021/06/22 Vue.js