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 fsockopen写的HTTP下载的类
Feb 22 PHP
PHP中遍历stdclass object的实现代码
Jun 09 PHP
PHP数组操作汇总 php数组的使用技巧
Jul 17 PHP
对淘宝URL中ID提取的PHP代码
Sep 01 PHP
PHP登陆后跳转到登陆前页面实现思路及代码
Jan 17 PHP
php调用shell的方法
Nov 05 PHP
简介PHP的Yii框架中缓存的一些高级用法
Mar 29 PHP
使用php实现网站验证码功能【推荐】
Feb 09 PHP
Linux下快速搭建php开发环境
Mar 13 PHP
PHP抽象类基本用法示例
Dec 28 PHP
php/JS实现的生成随机密码(验证码)功能示例
Jun 06 PHP
php的优点总结 php有哪些优点
Jul 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支持多种格式图片上传(支持jpg、png、gif)
2011/11/03 PHP
PHP输入流php://input介绍
2012/09/18 PHP
php以post形式发送xml的方法
2014/11/04 PHP
php计算整个mysql数据库大小的方法
2015/06/19 PHP
php实现当前页面点击下载文件的简单方法
2016/09/22 PHP
PHP连接及操作PostgreSQL数据库的方法详解
2019/01/30 PHP
JavaScript CSS菜单功能 改进版
2008/12/20 Javascript
JavaScript中“基本类型”之争小结
2013/01/03 Javascript
JSON中双引号的轮回使用过程中一定要小心
2014/03/05 Javascript
JavaScript改变CSS样式的方法汇总
2015/05/07 Javascript
jquery 动态增加删除行的简单实例(推荐)
2016/10/12 Javascript
JS简单获取当前日期和农历日期的方法
2017/04/17 Javascript
详解基于webpack2.x的vue2.x的多页面站点
2017/08/21 Javascript
javascript获取指定区间范围随机数的方法
2017/09/08 Javascript
JS基于递归实现网页版计算器的方法分析
2017/12/20 Javascript
Angular使用操作事件指令ng-click传多个参数示例
2018/03/27 Javascript
JavaScript实现shuffle数组洗牌操作示例
2019/01/03 Javascript
使用ESLint禁止项目导入特定模块的方法步骤
2019/03/04 Javascript
layui 表单标签的校验方法
2019/09/04 Javascript
python按行读取文件,去掉每行的换行符\n的实例
2018/04/19 Python
python使用tornado实现登录和登出
2018/07/28 Python
python获取地震信息 微信实时推送
2019/06/18 Python
python实现列表的排序方法分享
2019/07/01 Python
Pycharm 2020年最新激活码(亲测有效)
2020/09/18 Python
使用Tkinter制作信息提示框
2020/02/18 Python
python torch.utils.data.DataLoader使用方法
2020/04/02 Python
如何理解Python中的变量
2020/06/01 Python
Python函数__new__及__init__作用及区别解析
2020/08/31 Python
Alpine安装Python3依赖出现的问题及解决方法
2020/12/25 Python
南非最受欢迎的时尚品牌:MRP
2016/09/18 全球购物
外贸业务员岗位职责
2013/11/24 职场文书
大学新闻系应届生求职信
2014/06/02 职场文书
社区科普工作方案
2014/06/03 职场文书
法学专业毕业生求职信
2014/06/12 职场文书
涪陵白鹤梁导游词
2015/02/09 职场文书
卢旺达饭店观后感
2015/06/05 职场文书