声明:本系列博客参考资料《大话设计模式》,作者程杰。

迭代器模式:迭代器模式是遍历集合的成熟模式,迭代器模式的关键是将遍历集合的任务交给一个叫做迭代器的对象,它的工作时遍历并选择序列中的对象,而客户端程序员不必知道或关心该集合序列底层的结构。

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.为遍历不同的聚合结构提供一个统一的接口

欢迎关注我的视频课程,地址如下,谢谢。

PHP面向对象设计模式

PHP设计模式——迭代器模式相关推荐

  1. java设计模式迭代器模式_迭代器设计模式示例

    java设计模式迭代器模式 本文是我们名为" Java设计模式 "的学院课程的一部分. 在本课程中,您将深入研究大量的设计模式,并了解如何在Java中实现和利用它们. 您将了解模式 ...

  2. java设计模式迭代器模式_Java中的迭代器设计模式–示例教程

    java设计模式迭代器模式 迭代器模式是一种行为模式,它用于提供遍历一组对象的标准方式. Iterator模式在Java Collection Framework中得到了广泛使用,其中Iterator ...

  3. java设计模式迭代器模式_迭代器模式和Java

    java设计模式迭代器模式 大家好,在本文中,我们将检查Iterator Pattern . 我知道你们中许多人已经使用过一种设计模式,但是也许您没有意识到它是模式,或者不知道它的巨大价值. 根据&l ...

  4. java设计模式迭代器模式_Java中的迭代器设计模式

    java设计模式迭代器模式 Iterator design pattern in one of the behavioral pattern. Iterator pattern is used to ...

  5. 23种设计模式-迭代器模式《三国名将》

    对于许久不用的东西,容易忘记.百度许久,也未能找到自己所要. 从今日起,有些东西就记载下来,不仅方便自己,希望能帮到他人吧! 定义 提供一种方法顺序访问一个聚合对象中各个元素,而又不需暴露该对象的内部 ...

  6. [Head First设计模式]生活中学设计模式——迭代器模式

    系列文章 [Head First设计模式]山西面馆中的设计模式--装饰者模式 [Head First设计模式]山西面馆中的设计模式--观察者模式 [Head First设计模式]山西面馆中的设计模式- ...

  7. Java设计模式——迭代器模式

    概述 网上大部分人说迭代模式的时候,总是以某一种可遍历的对象为例进行介绍.这是可行的,这也是迭代模式的基本原型.当我看到<Head Frist设计模式>中迭代模式的时候,感觉要是能从另一个 ...

  8. C++设计模式-迭代器模式

    目录 基本概念 代码与实例 基本概念 迭代器模式(Iterator):提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示. 当你需要一个聚集对象,而且不管这些对象,而不管这些对象是 ...

  9. 解读设计模式----迭代器模式(Iterator Pattern),谁才是迭代高手

    一.你在开发中使用过迭代吗?      当你在使用JavaScript开发客户端应用的时候使用过for...in吗?  1<script type="text/javascript&q ...

  10. JAVA 设计模式 迭代器模式

    用途 迭代器模式 (Iterator) 提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示. 迭代器模式是一种行为型模式. 结构 图-迭代器模式结构图 Iterator : 定义访 ...

最新文章

  1. 应用层网关调研与基础测试
  2. 俄通信监管机构回应封锁微信: 收到资料核验后将解除封锁
  3. 热点账户问题和常用解决方案【上】
  4. python和c学习-学习 Python与C相互调用
  5. 老男孩28期学员苟安邦决心书
  6. 华为发布会: 牛逼鸿蒙,吹水的大会
  7. machine learning学习笔记
  8. Elasticsearch 基础入门(二)
  9. plsql 无法解析指定的连接标识符_TNS03505:无法解析名称
  10. OAuth2.0(基于django2.1.2实现版本)
  11. Google工程师多图详解Android系统架构
  12. 【转】图的割点、桥与双连通分支
  13. RestClient操作索引库
  14. oracle数据比对md5,MD5SUM的妙用
  15. 负载均衡器和代理服务器
  16. 浅谈 2020 年诺贝尔化学奖:通向未来的基因编辑
  17. 阿卡迪亚大学计算机专业好考吗,普通高中学生如何考取阿卡迪亚大学?
  18. 在wps里面怎么设置触发器_wps如何制作触发器
  19. 打破少儿编程学习进度中的技术关
  20. J9数字科普:Web3.0世界中的J9NFT:仍在发展但未来可期

热门文章

  1. 已知自然常数e的泰勒展开式是_泰勒公式:微分学的顶峰 (数学分析 · 导数的应用 (2))...
  2. python怎么绘制坐标图像_如何使用给定的坐标和python opencv在图像中绘制点?
  3. java epub 删除一页_java如何实现批量删除pdf指定的页数
  4. springboot 文件上传大小配置
  5. python进程socket通信_python之socket初识
  6. 如何快速调出软键盘_*小星推荐*—如何快速的制作模具3D装配档
  7. Matplotlib从入门到精通
  8. 中文分词与马尔科夫模型之二:隐马尔科夫模型与维特比
  9. linux 内核之美,Linux内核 | 系统调用
  10. Ubuntu 环境变量文件介绍