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下使用SimpleXML 处理XML 文件
Feb 27 PHP
PHP curl模拟浏览器采集阿里巴巴的实现代码
Apr 20 PHP
openPNE常用方法分享
Nov 29 PHP
php代码书写习惯优化小结
Jun 20 PHP
PHP的PSR规范中文版
Sep 28 PHP
php截取指定2个字符之间字符串的方法
Apr 15 PHP
Ubuntu下安装PHP的mongodb扩展操作命令
Jul 04 PHP
PHP程序员不应该忽略的3点
Oct 09 PHP
在Thinkphp中使用ajax实现无刷新分页的方法
Oct 25 PHP
PHP实现删除多重数组对象属性并重新赋值的方法
Jun 07 PHP
laravel框架使用FormRequest进行表单验证,验证异常返回JSON操作示例
Feb 18 PHP
PHP pthreads v3下同步处理synchronized用法示例
Feb 21 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 file_get_contents 函数超时的几种解决方法
2009/07/30 PHP
php设计模式之单例模式使用示例
2014/01/20 PHP
JS继承 笔记
2011/07/13 Javascript
window.open 以post方式传递参数示例代码
2014/02/27 Javascript
js判断url是否有效的两种方法
2014/03/04 Javascript
Underscore.js常用方法总结
2015/02/28 Javascript
javascript表格的渲染组件
2015/07/03 Javascript
jQuery实现Meizu魅族官方网站的导航菜单效果
2015/09/14 Javascript
jquery validate demo 基础
2015/10/29 Javascript
JS Ajax请求如何防止重复提交
2016/06/13 Javascript
详解利用exif.js解决ios手机上传竖拍照片旋转90度问题
2016/11/04 Javascript
JQuery实现动态操作表格
2017/01/11 Javascript
js实现tab选项卡切换功能
2017/01/13 Javascript
浅谈Angular 观察者模式理解
2018/11/01 Javascript
js仿360开机效果
2019/12/26 Javascript
vue quill editor 使用富文本添加上传音频功能
2020/01/14 Javascript
jQuery实现颜色打字机的完整代码
2020/03/19 jQuery
python代码检查工具pylint 让你的python更规范
2012/09/05 Python
python中执行shell命令的几个方法小结
2014/09/18 Python
Python实现截屏的函数
2015/07/25 Python
详解Python函数可变参数定义及其参数传递方式
2017/08/02 Python
Python获取二维矩阵每列最大值的方法
2018/04/03 Python
使用anaconda的pip安装第三方python包的操作步骤
2018/06/11 Python
Python实现全排列的打印
2018/08/18 Python
用python标准库difflib比较两份文件的异同详解
2018/11/16 Python
Python实现的爬取小说爬虫功能示例
2019/03/30 Python
Python二维数组实现求出3*3矩阵对角线元素的和示例
2019/11/29 Python
python实现图像拼接功能
2020/03/23 Python
在python中使用pyspark读写Hive数据操作
2020/06/06 Python
工程现场管理求职自荐信
2013/10/02 职场文书
会计专业的自荐信
2013/12/12 职场文书
校园十大歌手策划书
2014/02/01 职场文书
个人求职意向书
2015/05/11 职场文书
Windows下redis下载、redis安装及使用教程
2021/06/02 Redis
nginx之内存池的实现
2022/06/28 Servers
Python实现聚类K-means算法详解
2022/07/15 Python