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 相关文章推荐
php5 mysql分页实例代码
Apr 10 PHP
PHP中利用substr_replace将指定两位置之间的字符替换为*号
Jan 27 PHP
php分页函数示例代码分享
Feb 24 PHP
ThinkPHP中ajax使用实例教程
Aug 22 PHP
Laravel框架路由配置总结、设置技巧大全
Sep 03 PHP
ucenter通信原理分析
Jan 09 PHP
php微信支付之APP支付方法
Mar 04 PHP
eclipse php wamp配置教程
Jun 30 PHP
PHP怎样用正则抓取页面中的网址
Aug 09 PHP
PHP实现QQ登录的开原理和实现过程
Feb 04 PHP
详解json在php中的应用
Sep 30 PHP
PHP单元测试框架PHPUnit用法详解
Jan 23 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
一个MYSQL操作类
2006/11/16 PHP
php header示例代码(推荐)
2010/09/08 PHP
session在php5.3中的变化 session_is_registered() is deprecated in
2013/11/12 PHP
yii2.0实现创建简单widgets示例
2016/07/18 PHP
Yii遍历行下每列数据的方法
2016/10/17 PHP
在Laravel 中实现是否关注的示例
2019/10/22 PHP
prototype 中文参数乱码解决方案
2009/11/09 Javascript
JS input文本框禁用右键和复制粘贴功能的代码
2010/04/15 Javascript
Javascript计算两个marker之间的距离(Google Map V3)
2013/04/26 Javascript
JavaScript实现复制功能各浏览器支持情况实测
2013/07/18 Javascript
分享两款带遮罩的jQuery弹出框
2015/12/30 Javascript
详解nodejs与javascript中的aes加密
2016/05/22 NodeJs
基于Bootstrap实现的下拉菜单手机端不能选择菜单项的原因附解决办法
2016/07/22 Javascript
Vuex2.0+Vue2.0构建备忘录应用实践
2016/11/30 Javascript
js实现固定宽高滑动轮播图效果
2017/01/13 Javascript
AngularJS执行流程详解
2017/02/17 Javascript
jQuery实现简单漂亮的Nav导航菜单效果
2017/03/29 jQuery
浅析JS中常用类型转换及运算符表达式
2017/07/23 Javascript
node实现定时发送邮件的示例代码
2017/08/26 Javascript
angular4 JavaScript内存溢出问题
2018/03/06 Javascript
js重写alert事件(避免alert弹框标题出现网址)
2020/12/04 Javascript
使用Python中的cookielib模拟登录网站
2015/04/09 Python
Python使用email模块对邮件进行编码和解码的实例教程
2016/07/01 Python
Scrapy使用的基本流程与实例讲解
2018/10/21 Python
python实现画五角星和螺旋线的示例
2019/01/20 Python
python剪切视频与合并视频的实现
2020/03/03 Python
在django admin中配置搜索域是一个外键时的处理方法
2020/05/20 Python
python 检测nginx服务邮件报警的脚本
2020/12/31 Python
详解python中的异常和文件读写
2021/01/03 Python
化工专业大学生职业生涯规划书
2014/01/14 职场文书
求职意向书
2014/07/29 职场文书
普通党员自我剖析材料
2014/10/07 职场文书
2015年幼儿教师个人工作总结
2015/05/20 职场文书
学生会工作感言
2015/08/07 职场文书
2016高考寄语集锦
2015/12/04 职场文书
详细介绍python类及类的用法
2021/05/31 Python