php设计模式 -- 迭代器模式
迭代器模式:迭代器模式是遍历集合的成熟模式,迭代器模式的关键是将遍历集合的任务交给一个叫做迭代器的对象,它的工作时遍历并选择序列中的对象,而客户端程序员不必知道或关心该集合序列底层的结构。
UML类图:
角色:
Iterator(迭代器):迭代器定义访问和遍历元素的接口
ConcreteIterator(具体迭代器):具体迭代器实现迭代器接口,对该聚合遍历时跟踪当前位置
Aggregate (聚合):聚合定义创建相应迭代器对象的接口(可选)
ConcreteAggregate(具体聚合):具体聚合实现创建相应迭代器的接口,该操作返回ConcreteIterator的一个适当的实例(可选)
代码示例
<?php /*** Created by PhpStorm.* User: Jiang* Date: 2015/6/8* Time: 21:31*///抽象迭代器 abstract class IIterator {public abstract function First();public abstract function Next();public abstract function IsDone();public abstract function CurrentItem(); }//具体迭代器 class ConcreteIterator extends IIterator {private $aggre;private $current = 0;public function __construct(array $_aggre){$this->aggre = $_aggre;}//返回第一个public function First(){return $this->aggre[0];}//返回下一个public function Next(){$this->current++;if($this->current<count($this->aggre)){return $this->aggre[$this->current];}return false;}//返回是否IsDonepublic function IsDone(){return $this->current>=count($this->aggre)?true:false;}//返回当前聚集对象public function CurrentItem(){return $this->aggre[$this->current];} }
调用客户端测试代码:
header("Content-Type:text/html;charset=utf-8"); //--------------------------迭代器模式------------------- require_once "./Iterator/Iterator.php"; $iterator= new ConcreteIterator(array('周杰伦','王菲','周润发')); $item = $iterator->First(); echo $item."<br/>"; while(!$iterator->IsDone()) {echo "{$iterator->CurrentItem()}:请买票!<br/>";$iterator->Next(); }
使用场景:
1.访问一个聚合对象的内容而无需暴露它的内部表示
2.支持对聚合对象的多种遍历
3.为遍历不同的聚合结构提供一个统一的接口
转载于:https://www.cnblogs.com/mmmzh/p/10129568.html
php设计模式 -- 迭代器模式相关推荐
- java设计模式迭代器模式_迭代器设计模式示例
java设计模式迭代器模式 本文是我们名为" Java设计模式 "的学院课程的一部分. 在本课程中,您将深入研究大量的设计模式,并了解如何在Java中实现和利用它们. 您将了解模式 ...
- java设计模式迭代器模式_Java中的迭代器设计模式–示例教程
java设计模式迭代器模式 迭代器模式是一种行为模式,它用于提供遍历一组对象的标准方式. Iterator模式在Java Collection Framework中得到了广泛使用,其中Iterator ...
- java设计模式迭代器模式_迭代器模式和Java
java设计模式迭代器模式 大家好,在本文中,我们将检查Iterator Pattern . 我知道你们中许多人已经使用过一种设计模式,但是也许您没有意识到它是模式,或者不知道它的巨大价值. 根据&l ...
- java设计模式迭代器模式_Java中的迭代器设计模式
java设计模式迭代器模式 Iterator design pattern in one of the behavioral pattern. Iterator pattern is used to ...
- 23种设计模式-迭代器模式《三国名将》
对于许久不用的东西,容易忘记.百度许久,也未能找到自己所要. 从今日起,有些东西就记载下来,不仅方便自己,希望能帮到他人吧! 定义 提供一种方法顺序访问一个聚合对象中各个元素,而又不需暴露该对象的内部 ...
- [Head First设计模式]生活中学设计模式——迭代器模式
系列文章 [Head First设计模式]山西面馆中的设计模式--装饰者模式 [Head First设计模式]山西面馆中的设计模式--观察者模式 [Head First设计模式]山西面馆中的设计模式- ...
- Java设计模式——迭代器模式
概述 网上大部分人说迭代模式的时候,总是以某一种可遍历的对象为例进行介绍.这是可行的,这也是迭代模式的基本原型.当我看到<Head Frist设计模式>中迭代模式的时候,感觉要是能从另一个 ...
- C++设计模式-迭代器模式
目录 基本概念 代码与实例 基本概念 迭代器模式(Iterator):提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示. 当你需要一个聚集对象,而且不管这些对象,而不管这些对象是 ...
- 解读设计模式----迭代器模式(Iterator Pattern),谁才是迭代高手
一.你在开发中使用过迭代吗? 当你在使用JavaScript开发客户端应用的时候使用过for...in吗? 1<script type="text/javascript&q ...
- JAVA 设计模式 迭代器模式
用途 迭代器模式 (Iterator) 提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示. 迭代器模式是一种行为型模式. 结构 图-迭代器模式结构图 Iterator : 定义访 ...
最新文章
- 【Luogu】P1013进制位(搜索)
- ET001 不可不掌握的 Logstash 使用技巧
- The bag-of-words model
- nginx添加ssl证书认证
- 怎么实现动态设置静态文件存储目录?
- jdk 流合并_JDK 12,合并的收集器和命名的挑战
- leetcode143 重排链表
- AsyncHttpClien访问网络案例分析
- 数字三角形(洛谷-P1118)
- 中矿新生赛 H 璐神看岛屿【BFS/DFS求联通块/连通块区域在边界则此连通块无效】...
- 跳打开hdu 1208 (DP)
- LeetCode939
- 匿名内部类为什么访问外部类局部变量必须是final的?
- steam加速_《盗贼之海》发行之初荣登Steam榜首,UU加速器为您开黑提供保障
- windows无法完成格式化U盘与U盘修复对几种解决方法
- zuc算法代码详解_ZUC算法原理及实现过程
- STM32 下载调试口(JTAG+SWD)禁用及作为普通IO口
- 无线系统笔记(1)--梯度、散度、旋度(麦克斯韦先导)
- VUE-日期选择器-结束时间开始时间
- js区号插件(全国电话区号)