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 相关文章推荐
用cookies来跟踪识别用户
Oct 09 PHP
杏林同学录(七)
Oct 09 PHP
php 删除cookie和浏览器重定向
Mar 16 PHP
PHP 简单数组排序实现代码
Aug 05 PHP
php中判断字符串是否全是中文或含有中文的实现代码
Sep 16 PHP
thinkPHP中分页用法实例分析
Dec 26 PHP
PHP使用strrev翻转中文乱码问题的解决方法
Jan 13 PHP
PHP开发实现微信退款功能示例
Nov 25 PHP
PHP共享内存使用与信号控制实例分析
May 09 PHP
PHP封装的非对称加密RSA算法示例
May 28 PHP
详解PHP多个进程配合redis的有序集合实现大文件去重
Mar 06 PHP
Thinkphp框架+Layui实现图片/文件上传功能分析
Feb 07 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 操作数组(合并,拆分,追加,查找,删除等)
2012/07/20 PHP
PHP SPL标准库之数据结构栈(SplStack)介绍
2015/05/12 PHP
如何解决PHP使用mysql_query查询超大结果集超内存问题
2016/03/14 PHP
JavaScript入门教程(8) Location地址对象
2009/01/31 Javascript
9个javascript语法高亮插件 推荐
2009/07/18 Javascript
js模拟select下拉菜单控件的代码
2013/05/08 Javascript
简约JS日历控件 实例代码
2013/07/12 Javascript
jquery中prop()方法和attr()方法的区别浅析
2013/09/06 Javascript
js select option对象小结
2013/12/20 Javascript
Jquery中国地图热点效果-鼠标经过弹出提示层信息的简单实例
2014/02/12 Javascript
JS中FRAME的操作问题实例分析
2014/10/21 Javascript
jQuery中:visible选择器用法实例
2014/12/30 Javascript
JavaScript实现DIV层拖动及动态增加新层的方法
2015/05/12 Javascript
JavaScript包装对象使用详解
2015/07/09 Javascript
解决jquery插件:TypeError:$.browser is undefined报错的方法
2015/11/21 Javascript
深入解析nodejs HTTP服务
2017/07/25 NodeJs
详解javascript中的变量提升和函数提升
2018/05/24 Javascript
微信公众号平台接口开发 获取access_token过程解析
2019/08/14 Javascript
layui扩展上传组件模拟进度条的方法
2019/09/23 Javascript
深入理解 ES6中的 Reflect用法
2020/07/18 Javascript
简单讲解Python中的闭包
2015/08/11 Python
python解析基于xml格式的日志文件
2017/02/25 Python
python 数据的清理行为实例详解
2017/07/12 Python
Python实现mysql数据库更新表数据接口的功能
2017/11/19 Python
Python3 实现随机生成一组不重复数并按行写入文件
2018/04/09 Python
通过python的matplotlib包将Tensorflow数据进行可视化的方法
2019/01/09 Python
Django 外键的使用方法详解
2019/07/19 Python
TensorFlow实现自定义Op方式
2020/02/04 Python
canvas进阶之贝塞尔公式推导与物体跟随复杂曲线的轨迹运动
2018/01/10 HTML / CSS
Linux中如何用命令创建目录
2015/01/12 面试题
学生实习自我鉴定
2013/10/11 职场文书
急诊科护士自我鉴定
2013/10/14 职场文书
2014年社区学雷锋活动总结
2014/03/09 职场文书
大学毕业生推荐信
2014/07/09 职场文书
2019员工保密协议书(3篇)
2019/09/23 职场文书
Win11控制面板快捷键是什么?Win11打开控制面板的方法汇总
2022/07/07 数码科技