声明:这一系列的博客引用《大话设计模式》。程洁作者。

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

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; } //返回是否IsDone public function IsDone() { return $this->current>=count($this->aggre)?

true:false; } //返回当前聚集对象 public function CurrentItem() { return $this->aggre[$this->current]; } }

调用client測试代码:

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. 解读设计模式----迭代器模式(Iterator Pattern),谁才是迭代高手

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

  2. Java 设计模式 Iterator 迭代 模式

    Java 设计模式 Iterator 迭代 模式 Iterator模式用于在数据集合中按照顺序遍历集合. 涉及到的角色 迭代器:负责定义按顺序逐个遍历元素的接口. 具体的迭代器:负责实现迭代器角色定义 ...

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

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

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

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

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

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

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

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

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

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

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

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

  9. JavaScript设计模式系列—模式篇总结(上)

    转载请注明预见才能遇见的博客:http://my.csdn.net/ 原文地址:https://blog.csdn.net/pcaxb/article/details/102517956 JavaSc ...

最新文章

  1. Object.keys()
  2. 近期有哪些值得读的QA论文?| 专题论文解读
  3. symfony3 yml配置文件详解
  4. 2008中国最佳寓言
  5. LeetCode—Python版链表简单题(一)
  6. 树的叶子结点与完全二叉树结点计算方法
  7. 我看肖老师的《明日世界-云端计算下的程序设计需求》视频时,做的简单笔记
  8. 计算机如何进入ping,电脑怎么ping网络,教你电脑怎么ping网络
  9. JAVA线程中的sleep()、wait()、yield()、join()作用
  10. 网站上线前期应该如何制定关键词优化策略
  11. 基于STM32的倾斜仪设计(二)—— 硬件设计(2)
  12. 拯救者y7000问题解决
  13. 2345浏览器还算厚道
  14. 错误:没有注册类别 (异常来自 HRESULT:0x80040154 (REGDB_E_CLASSNOTREG))
  15. 2018-4-18《给孩子讲量子力学》
  16. 简单介绍进销存管理系统的核心功能有哪些
  17. 【调剂】华中师范大学伍伦贡联合研究院2021年单学位项目接收第一轮申请通知...
  18. C# 键值对 KeyValue 解析
  19. Android 11:bluetooth@1.0蓝牙架构分析
  20. Hermit Crab 工作室加入 The Sandbox 元宇宙

热门文章

  1. 校园计算机故障解决方论文法,计算机故障与处理-计算机专业毕业论文.pdf
  2. 路面平整度采集和计算方法
  3. 深度学习 卷积层与全连接层权重参数个数的计算
  4. linux grep 正则搜索某段时间内的日志
  5. 手机HTML编辑浏览器,HTML编辑浏览器
  6. 用php写京东抢购,关于抢京东券高并发的问题?
  7. substring、substr以及slice、splice用法和区别
  8. 安卓后端mysql_后端Spring Boot+前端Android交互+MySQL增删查改(Java+Kotlin实现)
  9. 实验八网络程序设计(网络编程)_JAVA
  10. 数据结构之稀疏数组 - SparseArray