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 str_pad 函数使用详解
Jan 13 PHP
PHP中冒号、endif、endwhile、endfor使用介绍
Apr 28 PHP
php 中的4种标记风格介绍
May 10 PHP
ThinkPHP模板判断输出Empty标签用法详解
Jun 30 PHP
php删除左端与右端空格的方法
Nov 29 PHP
THINKPHP2.0到3.0有哪些改进之处
Jan 04 PHP
php中ob_flush函数和flush函数用法分析
Mar 18 PHP
magento后台无法登录解决办法的两种方法
Dec 09 PHP
PhpStorm本地断点调试的方法步骤
May 21 PHP
PHP利用递归函数实现无限级分类的方法
Mar 22 PHP
PHP实现给定一列字符,生成指定长度的所有可能组合示例
Jun 22 PHP
laravel框架使用极光推送消息操作示例
Feb 15 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
第五节 克隆 [5]
2006/10/09 PHP
php使用mkdir创建多级目录入门例子
2014/05/10 PHP
php设计模式之委托模式
2016/02/13 PHP
Dom加载让图片加载完再执行的脚本代码
2008/05/15 Javascript
jquery多选项卡效果实例代码(附效果图)
2013/03/23 Javascript
Node.js中对通用模块的封装方法
2014/06/06 Javascript
浅谈javascript 函数属性和方法
2015/01/21 Javascript
JavaScript jquery及AJAX小结
2016/01/24 Javascript
JavaScript编写带旋转+线条干扰的验证码脚本实例
2016/05/30 Javascript
jQuery 自定义下拉框(DropDown)附源码下载
2016/07/22 Javascript
什么是JavaScript中的结果值?
2016/10/08 Javascript
分分钟玩转Vue.js组件(二)
2017/03/01 Javascript
JavaScript之事件委托实例(附原生js和jQuery代码)
2017/07/22 jQuery
vue.js  父向子组件传参的实例代码
2017/10/29 Javascript
浅谈Vue数据绑定的原理
2018/01/08 Javascript
jQuery实现遍历XML节点和属性的方法示例
2018/04/29 jQuery
在vue里使用codemirror遇到的问题
2018/11/01 Javascript
vue实现局部刷新的实现示例
2019/04/16 Javascript
简单了解JavaScript中的执行上下文和堆栈
2019/06/24 Javascript
jQuery实现的移动端图片缩放功能组件示例
2020/05/01 jQuery
Python通过递归遍历出集合中所有元素的方法
2015/02/25 Python
Python列表生成器的循环技巧分享
2015/03/06 Python
python中异常报错处理方法汇总
2016/11/20 Python
Python socket网络编程TCP/IP服务器与客户端通信
2017/01/05 Python
python基础while循环及if判断的实例讲解
2017/08/25 Python
python机器学习理论与实战(四)逻辑回归
2018/01/19 Python
python实现杨氏矩阵查找
2019/03/02 Python
Python实现最大子序和的方法示例
2019/07/05 Python
Python Django 命名空间模式的实现
2019/08/09 Python
python读写数据读写csv文件(pandas用法)
2020/12/14 Python
python基于opencv 实现图像时钟
2021/01/04 Python
数学系毕业生的自我评价
2014/01/10 职场文书
文明学生标兵事迹
2014/01/21 职场文书
学校消防演习方案
2014/02/19 职场文书
公证委托书格式
2014/09/13 职场文书
美丽的大脚观后感
2015/06/03 职场文书