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 相关文章推荐
用libTemplate实现静态网页的生成
Oct 09 PHP
PHP新手上路(五)
Oct 09 PHP
php 伪造本地文件包含漏洞的代码
Nov 03 PHP
php解压文件代码实现php在线解压
Feb 13 PHP
php实现mysql数据库操作类分享
Feb 14 PHP
PHP常用数组函数介绍
Jul 28 PHP
php自定义加密与解密程序实例
Dec 31 PHP
PHP回溯法解决0-1背包问题实例分析
Mar 23 PHP
PHP命令行执行整合pathinfo模拟定时任务实例
Aug 12 PHP
[原创]php使用strpos判断字符串中数字类型子字符串出错的解决方法
Apr 01 PHP
PHP使用栈解决约瑟夫环问题算法示例
Aug 27 PHP
PHP For循环字母A-Z当超过26个字母时输出AA,AB,AC
Feb 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
PHP5 操作MySQL数据库基础代码
2009/09/29 PHP
PHP5常用函数列表(分享)
2013/06/07 PHP
PHP面向对象程序设计重载(overloading)操作详解
2019/06/13 PHP
js获取触发事件元素在整个网页中的绝对坐标(示例代码)
2013/12/13 Javascript
使用百度地图api实现根据地址查询经纬度
2014/12/11 Javascript
代码分析jQuery四种静态方法使用
2015/07/23 Javascript
jQuery实现TAB选项卡切换特效简单演示
2016/03/04 Javascript
JS动态插入并立即执行回调函数的方法
2016/04/21 Javascript
设置jquery UI 控件的大小方法
2016/12/12 Javascript
js实现自动轮换选项卡
2017/01/13 Javascript
javascript计算渐变颜色的实例
2017/09/22 Javascript
使用Vue完成一个简单的todolist的方法
2017/12/01 Javascript
JS非行间样式获取函数的实例代码
2018/06/05 Javascript
React+Webpack快速上手指南(小结)
2018/08/15 Javascript
JS实现的杨辉三角【帕斯卡三角形】算法示例
2019/02/26 Javascript
使用nodejs分离html文件里的js和css详解
2019/04/12 NodeJs
python实现读取excel写入mysql的小工具详解
2017/11/20 Python
Python 实现两个列表里元素对应相乘的方法
2018/11/14 Python
对python实现二维函数高次拟合的示例详解
2018/12/29 Python
python生成每日报表数据(Excel)并邮件发送的实例
2019/02/03 Python
tornado+celery的简单使用详解
2019/12/21 Python
Python 批量读取文件中指定字符的实现
2020/03/06 Python
keras 指定程序在某块卡上训练实例
2020/06/22 Python
Scrapy实现模拟登录的示例代码
2021/02/21 Python
详解HTML5中表单验证的8种方法介绍
2016/12/19 HTML / CSS
遇到的Mysql的面试题
2014/06/29 面试题
入党转预备思想汇报
2014/01/07 职场文书
销售顾问岗位职责
2014/02/25 职场文书
国贸专业的职业规划书
2014/03/15 职场文书
和解协议书
2014/04/16 职场文书
群众路线调研报告范文
2014/11/03 职场文书
2014年优秀党员材料
2014/12/18 职场文书
班级联欢会主持词
2015/07/03 职场文书
新学期主题班会
2015/08/17 职场文书
python实现图片九宫格分割的示例
2021/04/25 Python
德劲DE1102数字调谐收音机机评
2022/04/07 无线电