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 相关文章推荐
WINDOWS服务器安装多套PHP的另类解决方案
Oct 09 PHP
简单的过滤字符串中的HTML标记
Dec 25 PHP
php foreach 使用&amp;(与运算符)引用赋值要注意的问题
Feb 16 PHP
PHP读取XML值的代码(推荐)
Jan 01 PHP
php压缩HTML函数轻松实现压缩html/js/Css及注意事项
Jan 27 PHP
使用迭代器 遍历文件信息的详解
Jun 08 PHP
服务器变量 $_SERVER 的深入解析
Jul 02 PHP
PHP中对缓冲区的控制实现代码
Sep 29 PHP
php站内搜索关键词变亮的实现方法
Dec 30 PHP
php生成rss类用法实例
Apr 14 PHP
ThinkPHP实现简单登陆功能
Apr 28 PHP
详解Yii2.0使用AR联表查询实例
Jun 16 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
将数字格式的计算结果转为汉字格式
2006/10/09 PHP
生成卡号php代码
2008/04/09 PHP
解析yii数据库的增删查改
2013/06/20 PHP
PHP中Session和Cookie是如何操作的
2015/10/10 PHP
PHP第三方登录―QQ登录实现方法
2017/02/06 PHP
PHP实现的解汉诺塔问题算法示例
2018/08/06 PHP
Javascript - HTML的request类
2007/01/09 Javascript
JQuery 1.4 中的Ajax问题
2010/01/23 Javascript
javascript面向对象的方式实现的弹出层效果代码
2010/01/28 Javascript
JQuery通过Ajax提交表单并返回结果
2011/07/31 Javascript
JS连接SQL数据库与ACCESS数据库的方法实例
2013/11/21 Javascript
浅谈JavaScript函数参数的可修改性问题
2013/12/05 Javascript
jQuery学习笔记之 Ajax操作篇(一) - 数据加载
2014/06/23 Javascript
Web前端新人笔记之jquery入门心得(新手必看)
2016/05/17 Javascript
JS取模、取商及取整运算方法示例
2016/10/13 Javascript
LayUI表格批量删除方法
2018/08/15 Javascript
微信小程序聊天功能的示例代码
2020/01/13 Javascript
以一个投票程序的实例来讲解Python的Django框架使用
2016/02/18 Python
详解Python的Lambda函数与排序
2016/10/25 Python
基于Python数据可视化利器Matplotlib,绘图入门篇,Pyplot详解
2017/10/13 Python
python 类对象和实例对象动态添加方法(分享)
2017/12/31 Python
django2+uwsgi+nginx上线部署到服务器Ubuntu16.04
2018/06/26 Python
Python面向对象程序设计之继承与多继承用法分析
2018/07/13 Python
如何通过python的fabric包完成代码上传部署
2019/07/29 Python
Python实现线性插值和三次样条插值的示例代码
2019/11/13 Python
css背景图片的背景裁切、背景透明度、背景变换等效果运用
2012/12/24 HTML / CSS
CSS3毛玻璃效果(blur)有白边问题的解决方法
2016/11/15 HTML / CSS
HTML中fieldset标签概述及使用方法
2013/02/01 HTML / CSS
阿迪达斯俄罗斯官方商城:adidas俄罗斯
2017/03/08 全球购物
带薪年假请假条
2014/02/04 职场文书
学校庆元旦歌咏比赛主持词
2014/03/18 职场文书
领导班子对照检查材料
2014/09/22 职场文书
解除劳动合同通知书范本
2015/04/16 职场文书
关爱留守儿童捐款倡议书
2015/04/27 职场文书
浅谈TypeScript 索引签名的理解
2021/10/16 Javascript
MySQL普通表如何转换成分区表
2022/05/30 MySQL