PHP设计模式之迭代器模式


Posted in PHP onJune 17, 2016

在不需要了解内部实现的前提下,遍历一个聚合对象的内部元素而又不暴露该对象的内部表示,这就是PHP迭代器模式的定义。

适用场景:
访问一个聚合对象的内容而无需暴露它的内部表示
支持对聚合对象的多种遍历
为遍历不同的聚合结构提供一个统一的接口

迭代器模式实例:

<?php
class ConcreteIterator implements Iterator{
 private $position = 0;
 private $arr;
 function __construct(array $arr){
 $this->arr = $arr;
 }

 function rewind(){
 $this->position = 0;
 }

 function current(){
 return $this->arr[$this->position];
 }

 function key(){
 return $this->position;
 }

 function next(){
 ++$this->position;
 }

 function valid(){
 return isset($this->arr[$this->position]);
 }
}

$arr = array('xiao hong','xiao ming','xiaohua');
$concreteIterator = new ConcreteIterator($arr);
foreach ($concreteIterator as $key => $value) {
 echo $key."=>".$value."\n";
}

以上就是本文的全部内容,希望对大家学习PHP设计模式有所帮助。

PHP 相关文章推荐
php设置session值和cookies的学习示例
Mar 21 PHP
php实现的Captcha验证码类实例
Sep 22 PHP
php画图实例
Nov 05 PHP
php可应用于面包屑导航的迭代寻找家谱树实现方法
Feb 02 PHP
PHP执行linux命令常用函数汇总
Feb 02 PHP
CodeIgniter分页类pagination使用方法示例
Mar 28 PHP
利用PHP将图片转换成base64编码的实现方法
Sep 13 PHP
PHP编程实现csv文件导入mysql数据库的方法
Apr 29 PHP
php代码调试利器firephp安装与使用方法分析
Aug 21 PHP
Laravel5.1框架注册中间件的三种场景详解
Jul 09 PHP
实现laravel 插入操作日志到数据库的方法
Oct 11 PHP
Thinkphp极验滑动验证码实现步骤解析
Nov 24 PHP
浅析PHP中的i++与++i的区别及效率
Jun 15 #PHP
学习PHP session的传递方式
Jun 15 #PHP
php实现图片上传时添加文字和图片水印技巧
Apr 18 #PHP
PHP实现适用于文件内容操作的分页类
Jun 15 #PHP
PHP实现适用于自定义的验证码类
Jun 15 #PHP
php实现常见图片格式的水印和缩略图制作(面向对象)
Jun 15 #PHP
使用JavaScript创建新样式表和新样式规则
Jun 14 #PHP
You might like
PHP编程函数安全篇
2013/01/08 PHP
smarty模板中使用get、post、request、cookies、session变量的方法
2014/04/24 PHP
thinkPHP交易详情查询功能详解
2016/12/02 PHP
PHP读取并输出XML文件数据的简单实现方法
2017/12/22 PHP
JXTree对象,读取外部xml文件数据,生成树的函数
2007/04/02 Javascript
jQuery 连续列表实现代码
2009/12/21 Javascript
js获取当前路径的简单示例代码
2014/01/08 Javascript
jquery中的工具使用方法$.isFunction, $.isArray(), $.isWindow()
2015/08/09 Javascript
js读取并解析JSON类型数据的方法
2015/11/14 Javascript
javascript中arguments,callee,caller详解
2016/03/16 Javascript
BootStrap 智能表单实战系列(二)BootStrap支持的类型简介
2016/06/13 Javascript
Javascript获取图片原始宽度和高度的方法详解
2016/09/20 Javascript
vue项目中v-model父子组件通信的实现详解
2017/12/10 Javascript
浅析JS中回调函数及用法
2018/07/25 Javascript
小程序如何构建骨架屏
2019/05/29 Javascript
生产制造追溯系统之再说条码打印
2019/06/03 Javascript
vue中实现高德定位功能
2019/12/03 Javascript
微信小程序以ssm做后台开发的实现示例
2020/04/08 Javascript
小程序表单认证布局及验证详解
2020/06/19 Javascript
Python 自动安装 Rising 杀毒软件
2009/04/24 Python
利用Python绘制数据的瀑布图的教程
2015/04/07 Python
浅谈python中的__init__、__new__和__call__方法
2017/07/18 Python
Python3爬虫使用Fidder实现APP爬取示例
2018/11/27 Python
python调用pyaudio使用麦克风录制wav声音文件的教程
2019/06/26 Python
Django框架组成结构、基本概念与文件功能分析
2019/07/30 Python
anaconda3安装及jupyter环境配置全教程
2020/08/24 Python
Python爬虫UA伪装爬取的实例讲解
2021/02/19 Python
Surfdome西班牙:世界上最受欢迎的生活方式品牌
2019/02/13 全球购物
门诊挂号室室长岗位职责
2013/11/27 职场文书
综合办公室主任岗位职责
2014/04/13 职场文书
公司股东出资证明书
2014/11/01 职场文书
教师求职简历自我评价
2015/03/10 职场文书
Laravel中获取IP的真实地理位置
2021/04/01 PHP
十个Python自动化常用操作,即拿即用
2021/05/10 Python
基于Pygame实现简单的贪吃蛇游戏
2021/12/06 Python
MyBatis XPathParser解析器使用范例详解
2022/07/15 Java/Android