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 相关文章推荐
第十四节 命名空间 [14]
Oct 09 PHP
php下安装配置fckeditor编辑器的方法
Mar 02 PHP
使用php计算排列组合的方法
Nov 13 PHP
PHP修改session_id示例代码
Jan 08 PHP
PIGCMS 如何关闭聊天机器人
Feb 12 PHP
Linux环境下php实现给网站截图的方法
May 03 PHP
利用php实现一周之内自动登录存储机制(cookie、session、localStorage)
Oct 31 PHP
PHP如何获取当前主机、域名、网址、路径、端口等参数
Jun 09 PHP
PHP 中TP5 Request 请求对象的实例详解
Jul 31 PHP
PHP children()函数讲解
Feb 03 PHP
PHP去除空数组且数组键名重置的讲解
Feb 28 PHP
解决laravel id非自增 模型取回为0 的问题
Oct 11 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
浅析get与post的一些特殊情况
2014/07/28 PHP
php生成验证码函数
2015/10/20 PHP
php简单实现文件或图片强制下载的方法
2016/12/06 PHP
PHP $O00OO0=urldecode &amp; eval 解密,记一次商业源码的去后门
2020/09/13 PHP
jQuery之$(document).ready()使用介绍
2012/04/05 Javascript
JQuery DataTable删除行后的页面更新利用Ajax解决
2013/05/17 Javascript
js加入收藏以及使用Jquery更改透明度
2014/01/26 Javascript
Express.JS使用详解
2014/07/17 Javascript
js实现图片无缝滚动特效
2020/03/19 Javascript
jquery实现一个简单的表单验证实例
2016/03/30 Javascript
jquery动态添加文本并获取值的方法
2016/10/12 Javascript
jquery实现简单的瀑布流布局
2016/12/11 Javascript
微信小程序开发(一) 微信登录流程详解
2017/01/11 Javascript
微信小程序之绑定点击事件实例详解
2017/07/07 Javascript
Node.js服务器开启Gzip压缩教程
2017/08/11 Javascript
Node.js调用fs.renameSync报错(Error: EXDEV, cross-device link not permitted)
2017/12/27 Javascript
基于vue1和vue2获取dom元素的方法
2018/03/17 Javascript
vue2.0 资源文件assets和static的区别详解
2018/04/08 Javascript
一个Vue页面的内存泄露分析详解
2018/06/25 Javascript
[35:39]完美世界DOTA2联赛PWL S2 FTD.C vs Rebirth 第二场 11.22
2020/11/24 DOTA
python编程嵌套函数实例代码
2018/02/11 Python
对python的输出和输出格式详解
2018/12/08 Python
python中通过selenium简单操作及元素定位知识点总结
2019/09/10 Python
Python求正态分布曲线下面积实例
2019/11/20 Python
python中实现词云图的示例
2020/12/19 Python
Linux如何修改文件和文件夹的权限
2013/09/05 面试题
幼儿园家长会欢迎词
2014/01/09 职场文书
公司承诺书怎么写
2014/05/24 职场文书
小学运动会口号
2014/06/07 职场文书
实验心得体会
2014/09/05 职场文书
财务会计实训报告
2014/11/05 职场文书
婚宴领导致辞
2015/07/28 职场文书
公司晚宴祝酒词
2015/08/11 职场文书
vue中 this.$set的使用详解
2021/11/17 Vue.js
CKAD认证中部署k8s并配置Calico插件
2022/03/31 Servers
Oracle数据库事务的开启与结束详解
2022/06/25 Oracle