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 选项及相关信息函数库
Dec 04 PHP
利用中国天气预报接口实现简单天气预报
Jan 20 PHP
php函数实现判断是否移动端访问
Mar 03 PHP
php商品对比功能代码分享
Sep 24 PHP
php cli配置文件问题分析
Oct 15 PHP
使用PHP similar text计算两个字符串相似度
Nov 06 PHP
详解 PHP加密解密字符串函数附源码下载
Dec 18 PHP
PHP操作FTP类 (上传、下载、移动、创建等)
Mar 31 PHP
解决yii2左侧菜单子级无法高亮问题的方法
May 08 PHP
CI框架实现框架前后端分离的方法详解
Dec 30 PHP
PHP 与 UTF-8 的最佳实践详细介绍
Jan 04 PHP
Yii CFileCache 获取不到值的原因分析
Feb 08 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编程开发“虚拟域名”系统
2006/10/09 PHP
php面向对象全攻略 (八)重载新的方法
2009/09/30 PHP
PHP MySQL应用中使用XOR运算加密算法分享
2011/08/28 PHP
判断php数组是否为索引数组的实现方法
2013/06/13 PHP
PHP MVC框架路由学习笔记
2016/03/02 PHP
又拍云异步上传实例教程详解
2016/04/19 PHP
IE8 chrome中table隔行换色解决办法
2010/07/09 Javascript
javascript string字符串优化问题
2011/07/31 Javascript
js中单引号与双引号冲突问题解决方法
2013/10/04 Javascript
jQuery中before()方法用法实例
2014/12/25 Javascript
Javascript中的Prototype到底是什么
2016/02/16 Javascript
微信小程序开发之自定义tabBar的实现
2018/09/06 Javascript
详解如何在微信小程序开发中正确的使用vant ui组件
2018/09/13 Javascript
angular学习之动态创建表单的方法
2018/12/07 Javascript
vue实现抖音时间转盘
2019/09/08 Javascript
vue视频播放插件vue-video-player的具体使用方法
2019/11/08 Javascript
JavaScript实现联动菜单特效
2020/01/07 Javascript
Python中字典(dict)和列表(list)的排序方法实例
2014/06/16 Python
python执行等待程序直到第二天零点的方法
2015/04/23 Python
Python获取邮件地址的方法
2015/07/10 Python
Python程序中设置HTTP代理
2016/11/06 Python
python 按照固定长度分割字符串的方法小结
2018/04/30 Python
Python笔试面试题小结
2019/09/07 Python
python实现视频读取和转化图片
2019/12/10 Python
Jupyter Notebook折叠输出的内容实例
2020/04/22 Python
HTML5标签与HTML4标签的区别示例介绍
2013/07/18 HTML / CSS
五分钟学会HTML5的WebSocket协议
2019/11/22 HTML / CSS
澳大利亚旅游网站:Lastminute
2017/08/07 全球购物
俄罗斯首家面向中国消费者的一站式购物网站:Wruru
2020/05/08 全球购物
什么是接口(Interface)?
2013/02/01 面试题
一个J2EE项目团队的主要人员组成是什么
2012/06/04 面试题
教师个人查摆剖析材料
2014/10/14 职场文书
营销经理工作检讨书
2014/11/03 职场文书
会计专业求职信范文
2015/03/19 职场文书
导游词之四川武侯祠
2019/10/21 职场文书
nginx配置指令之server_name的具体使用
2022/08/14 Servers