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 相关文章推荐
PHP4实际应用经验篇(8)
Oct 09 PHP
php学习笔记 PHP面向对象的程序设计
Jun 13 PHP
php中用于检测一个地理IP地址是否可用的代码
Feb 19 PHP
非常实用的php弹出错误警告函数扩展性强
Jan 17 PHP
php通过前序遍历树实现无需递归的无限极分类
Jul 10 PHP
thinkphp3.x中cookie方法的用法分析
May 19 PHP
php判断是否为ajax请求的方法
Nov 29 PHP
PHP魔术方法之__call与__callStatic使用方法
Jul 23 PHP
thinkphp5 URL和路由的功能详解与实例
Dec 26 PHP
关于ThinkPHP中的异常处理详解
May 11 PHP
实例分析PHP将字符串转换成数字的方法
Jan 27 PHP
laravel 修改记住我功能的cookie保存时间的方法
Oct 14 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
phpmyadmin操作流程
2006/10/09 PHP
模拟flock实现文件锁定
2007/02/14 PHP
php session 错误
2009/05/21 PHP
PHP 常用的header头部定义汇总
2015/06/19 PHP
PHP简单数据库操作类实例【支持增删改查及链式操作】
2016/10/10 PHP
strpos() 函数判断字符串中是否包含某字符串的方法
2019/01/16 PHP
php 使用mpdf实现指定字段配置字体样式的方法
2019/07/29 PHP
PHP的静态方法与普通方法用法实例分析
2019/09/26 PHP
javascript 中String.match()与RegExp.exec()的区别说明
2013/01/10 Javascript
用JavaScript实现类似于ListBox功能示例代码
2014/03/09 Javascript
javascript实现粘贴qq截图功能(clipboardData)
2016/05/29 Javascript
JS比较两个数值的大小实例
2016/11/25 Javascript
JavaScript函数节流和函数防抖之间的区别
2017/02/15 Javascript
JavaScript中利用构造器函数模拟类的方法
2017/02/16 Javascript
jq源码解析之绑在$,jQuery上面的方法(实例讲解)
2017/10/13 jQuery
nodejs结合Socket.IO实现的即时通讯功能详解
2018/01/12 NodeJs
js消除图片小游戏代码
2019/12/11 Javascript
vue中解决微信html5原生ios虚拟键返回不刷新问题
2020/10/20 Javascript
[00:15]天涯墨客终极技能展示
2018/08/25 DOTA
使用python编写简单的小程序编译成exe跑在win10上
2018/01/15 Python
Python实现字符串的逆序 C++字符串逆序算法
2020/05/28 Python
python打印9宫格、25宫格等奇数格 满足横竖斜相加和相等
2019/07/19 Python
计算Python Numpy向量之间的欧氏距离实例
2020/05/22 Python
flask开启多线程的具体方法
2020/08/02 Python
CSS3弹性盒模型开发笔记(二)
2016/04/26 HTML / CSS
俄罗斯披萨、寿司和面食送货到家服务:2 Берега
2019/12/15 全球购物
介绍一下Ruby中的对象,属性和方法
2012/07/11 面试题
自主招生自荐信
2013/12/08 职场文书
实习生求职自荐信
2014/02/07 职场文书
班级旅游计划书
2014/05/03 职场文书
爱与责任师德演讲稿
2014/08/26 职场文书
私人委托书格式
2014/09/10 职场文书
师德师风自查总结
2014/10/14 职场文书
少年雷锋观后感
2015/06/10 职场文书
歌咏比赛口号大全
2015/12/25 职场文书
零基础学java之带返回值的方法的定义和调用
2022/04/10 Java/Android