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 工厂模式使用方法
May 18 PHP
PHP设计模式 注册表模式
Feb 05 PHP
Yii PHP Framework实用入门教程(详细介绍)
Jun 18 PHP
PHP中对各种加密算法、Hash算法的速度测试对比代码
Jul 08 PHP
PHP实现把文本中的URL转换为链接的auolink()函数分享
Jul 29 PHP
php cookie名使用点号(句号)会被转换
Oct 23 PHP
php中simplexml_load_file函数用法实例
Nov 12 PHP
PHP利用func_get_args和func_num_args函数实现函数重载实例
Nov 12 PHP
php上传图片客户端和服务器端实现方法
Mar 30 PHP
PHP中SERIALIZE和JSON的序列化与反序列化操作区别分析
Oct 11 PHP
详解php用static方法的原因
Sep 12 PHP
深入浅析安装PhpStorm并激活的步骤详解
Sep 17 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
Yii 快速,安全,专业的PHP框架
2014/09/03 PHP
PHP模拟asp中response类实现方法
2015/08/08 PHP
PHP不使用内置函数实现字符串转整型的方法示例
2017/07/03 PHP
JavaScript之自定义类型
2012/05/04 Javascript
javascript中创建对象的几种方法总结
2013/11/01 Javascript
js实现简单的左右两边固定广告效果实例
2015/04/10 Javascript
javascript数组去重方法汇总
2015/04/23 Javascript
原生js实现简单的模态框示例
2017/09/08 Javascript
Vue按需加载的具体实现
2017/12/02 Javascript
微信小程序icon组件使用详解
2018/01/31 Javascript
详解Vue组件之作用域插槽
2018/11/22 Javascript
解决layui中onchange失效以及form动态渲染失效的问题
2019/09/27 Javascript
Vue用mixin合并重复代码的实现
2020/11/27 Vue.js
[02:14]DOTA2英雄基础教程 修补匠
2013/12/23 DOTA
深入浅析python继承问题
2016/05/29 Python
python如何通过twisted实现数据库异步插入
2018/03/20 Python
django js实现部分页面刷新的示例代码
2018/05/28 Python
Tensorflow 合并通道及加载子模型的方法
2018/07/26 Python
mac安装pytorch及系统的numpy更新方法
2018/07/26 Python
解决Mac下首次安装pycharm无project interpreter的问题
2018/10/29 Python
通过python扫描二维码/条形码并打印数据
2019/11/14 Python
Python tkinter三种布局实例详解
2020/01/06 Python
python numpy 矩阵堆叠实例
2020/01/17 Python
tensorflow之变量初始化(tf.Variable)使用详解
2020/02/06 Python
解决python中0x80072ee2错误的方法
2020/07/19 Python
VSCode中autopep8无法运行问题解决方案(提示Error: Command failed,usage)
2021/03/02 Python
五分钟学会HTML5的WebSocket协议
2019/11/22 HTML / CSS
视图的作用
2014/12/19 面试题
医学生实习自荐信
2013/10/01 职场文书
《口技》教学反思
2014/02/21 职场文书
森马旗舰店双十一营销方案
2014/09/29 职场文书
敲诈同学钱财检讨书范文
2014/11/18 职场文书
小学数学教学随笔
2015/08/14 职场文书
python实现Thrift服务端的方法
2021/04/20 Python
JAVA SpringMVC实现自定义拦截器
2022/03/16 Python
SQLServer RANK() 排名函数的使用
2022/03/23 SQL Server