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+MySQL 手工注入语句大全 推荐
Oct 30 PHP
PHP has encountered an Access Violation 错误的解决方法
Jan 17 PHP
PHP 命令行工具 shell_exec, exec, passthru, system详细使用介绍
Sep 11 PHP
PHP 第三节 变量介绍
Apr 28 PHP
解析PHP 5.5 新特性
Jul 02 PHP
PHP发送短信代码分享
Aug 11 PHP
PHP中addslashes()和stripslashes()实现字符串转义和还原用法实例
Jan 07 PHP
PHP聚合式迭代器接口IteratorAggregate用法分析
Dec 28 PHP
PHP常用字符串函数小结(推荐)
Aug 05 PHP
Laravel框架控制器的request与response用法示例
Sep 30 PHP
YII2框架中使用RBAC对模块,控制器,方法的权限控制及规则的使用示例
Mar 18 PHP
php实现断点续传大文件示例代码
Jun 19 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分页显示制作详细讲解
2006/12/05 PHP
让Nginx支持ThinkPHP的URL重写和PATHINFO的方法分享
2011/08/08 PHP
10个值得深思的PHP面试题
2016/11/14 PHP
10个实用的脚本代码工具
2010/05/04 Javascript
Jquery Autocomplete 结合asp.net使用要点
2010/10/29 Javascript
js对象转json数组的简单实现案例
2014/02/28 Javascript
Jquery 点击按钮自动高亮实现原理及代码
2014/04/25 Javascript
jquery中获得元素尺寸和坐标的方法整理
2014/05/18 Javascript
做web开发 先学JavaScript
2014/12/12 Javascript
JavaScript组件焦点与页内锚点间传值的方法
2015/02/02 Javascript
简介JavaScript中的unshift()方法的使用
2015/06/09 Javascript
AngularJS 指令详细介绍
2016/07/27 Javascript
微信小程序 action-sheet底部菜单详解
2016/10/27 Javascript
JavaScript自定义浏览器滚动条兼容IE、 火狐和chrome
2017/01/05 Javascript
微信小程序 详解Page中data数据操作和函数调用
2017/01/12 Javascript
详解在Angularjs中ui-sref和$state.go如何传递参数
2017/04/24 Javascript
JS的函数调用栈stack size的计算方法
2018/06/24 Javascript
详解如何在Node.js的httpServer中接收前端发送的arraybuffer数据
2018/11/11 Javascript
百度小程序之间的页面通信过程详解
2019/07/18 Javascript
python ansible服务及剧本编写
2017/12/29 Python
Django中的CBV和FBV示例介绍
2018/02/25 Python
python 找出list中最大或者最小几个数的索引方法
2018/10/30 Python
解决python执行不输出系统命令弹框的问题
2019/06/24 Python
python 实现将多条曲线画在一幅图上的方法
2019/07/07 Python
Django模板语言 Tags使用详解
2019/09/09 Python
tensorflow入门:TFRecordDataset变长数据的batch读取详解
2020/01/20 Python
python集合的新增元素方法整理
2020/12/07 Python
HTML5 中新的全局属性(整理)
2013/07/31 HTML / CSS
html5 postMessage解决跨域、跨窗口消息传递方案
2016/12/20 HTML / CSS
Debenhams爱尔兰:英国知名的百货公司
2017/01/02 全球购物
美国知名生活购物网站:Goop
2017/11/03 全球购物
Otticanet澳大利亚:最顶尖的世界名牌眼镜, 能得到打折季的价格
2018/08/23 全球购物
党员一句话承诺大全
2014/03/28 职场文书
贫困证明模板(3篇)
2014/09/16 职场文书
夫妻房产协议书的格式
2014/10/11 职场文书
详解Golang如何实现支持随机删除元素的堆
2022/09/23 Python