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 相关文章推荐
第十四节 命名空间 [14]
Oct 09 PHP
用session做客户验证时的注意事项
Oct 09 PHP
Ajax PHP简单入门教程代码
Apr 25 PHP
php 结果集的分页实现代码
Mar 10 PHP
php中截取中文字符串的代码小结
Jul 17 PHP
PHP投票系统防刷票判断流程分析
Feb 04 PHP
php类中private属性继承问题分析
Nov 01 PHP
PHP获取毫秒级时间戳的方法
Apr 15 PHP
php远程下载类分享
Apr 13 PHP
Thinkphp 中 distinct 的用法解析
Dec 14 PHP
PHP简单留言本功能实现代码
Jun 09 PHP
PHP date_default_timezone_set()设置时区操作实例分析
May 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
Google Voice 短信发送接口PHP开源版(2010.5更新)
2010/07/22 PHP
PHP fopen 读取带中文URL地址的一点见解
2012/09/25 PHP
深入php var_dump()函数的详解
2013/06/05 PHP
php实现文件预览功能
2017/05/23 PHP
PHP7新特性之抽象语法树(AST)带来的变化详解
2018/07/17 PHP
Thinkphp 在api开发中异常返回依然是html的解决方式
2019/10/16 PHP
Laravel监听数据库访问,打印SQL的例子
2019/10/24 PHP
Laravel 手动开关 Eloquent 修改器的操作方法
2019/12/30 PHP
利用Ext Js生成动态树实例代码
2008/09/08 Javascript
javascript 哈希表(hashtable)的简单实现
2010/01/20 Javascript
JQuery中$之选择器用法介绍
2011/04/05 Javascript
JavaScript输入邮箱自动提示实例代码
2014/01/13 Javascript
简单分析javascript面向对象与原型
2015/05/21 Javascript
JavaScript中的toUTCString()方法使用详解
2015/06/12 Javascript
Angular2 (RC5) 路由与导航详解
2016/09/21 Javascript
微信小程序 上传头像的实例详解
2017/10/27 Javascript
使用socket.io制做简易WEB聊天室
2018/01/02 Javascript
angular6.x中ngTemplateOutlet指令的使用示例
2018/08/09 Javascript
Vue 事件处理操作实例详解
2019/03/05 Javascript
基于Vue的商品主图放大镜方案详解
2019/09/19 Javascript
H5实现手机拍照和选择上传功能
2019/12/18 Javascript
VUE中setTimeout和setInterval自动销毁案例
2020/09/07 Javascript
Python random模块用法解析及简单示例
2017/12/18 Python
Python实现的生成格雷码功能示例
2018/01/24 Python
Python 中的range(),以及列表切片方法
2018/07/02 Python
torchxrayvision包安装过程(附pytorch1.6cpu版安装)
2020/08/26 Python
基于python爬取梨视频实现过程解析
2020/11/09 Python
Python 多进程、多线程效率对比
2020/11/19 Python
python中uuid模块实例浅析
2020/12/29 Python
家庭户外服装:Hawkshead
2017/11/02 全球购物
美国NBA官方商店:NBA Store
2019/04/12 全球购物
机电一体化专业应届生求职信
2013/11/27 职场文书
个人整改方案范文
2014/10/25 职场文书
会计工作岗位职责
2015/02/03 职场文书
碧霞祠导游词
2015/02/09 职场文书
小学音乐课歌曲《堆雪人》教学反思
2016/02/18 职场文书