迭代器模式的定义

定义: 它提供一种方法访问一个容器对象中各个元素, 而又不需暴露该对象的内部细节

其类图如下:

其中角色:

  1. Iterator 抽象迭代器: 抽象迭代器负责定义访问和遍历元素的接口, 而且基本上是有固定的三个方法: first()获得第一个元素, next()访问下一个元素, isDone() 是否已经访问到末尾
  2. ConcreteIteraor 具体迭代器: 实现抽象 迭代器, 完成容器元素的遍历
  3. Aggregate 抽象容器: 负责提供创建具体迭代器的接口
  4. ConcreteAggregate 具体容器: 实现抽象容器定义的方法, 创建出容纳迭代器的对象

其代码实现如下:

抽象迭代器:

具体迭代器:

抽象容器:

具体容器:

场景类:

迭代器模式的应用

其实, 现在基本上所有的高级语言都实现了迭代器, 基本上跟很少有项目再独立写迭代器了.

迭代器现在应用的越来越广泛了, 甚至已经成为一个最基础的工具


如果做Java开发, 尽量不要自己写迭代器模式. 使用Java提供的Iterator一般就能满足要求了

23种设计模式之迭代器模式相关推荐

  1. 23种设计模式——装饰者模式

    文章目录 23种设计模式--装饰者模式 1.装饰者模式概述 2.装饰者模式的结构 3.装饰者模式的实现 4.装饰者模式的应用场景 23种设计模式--装饰者模式 1.装饰者模式概述 背景 有些人为了早上 ...

  2. 实践GoF的23种设计模式:建造者模式

    本文分享自华为云社区<[Go实现]实践GoF的23种设计模式:建造者模式>,作者: 元闰子. 简述 在程序设计中,我们会经常遇到一些复杂的对象,其中有很多成员属性,甚至嵌套着多个复杂的对象 ...

  3. 【Go实现】实践GoF的23种设计模式:命令模式

    上一篇:[Go实现]实践GoF的23种设计模式:代理模式 简单的分布式应用系统(示例代码工程):https://github.com/ruanrunxue/Practice-Design-Patter ...

  4. 23种设计模式7_代理模式之一静态代理

    23种设计模式7_代理模式之一静态代理 1 基本介绍 代理模式:为其他对象提供一种代理以控制对这个对象的访问 代理模式也叫委托模式,它是一项基本设计技巧.许多其他的模式,如状态模式.策略模式.访问者模 ...

  5. 23种设计模式之命令模式和策略模式的区别

    文章目录 概述 命令模式 策略模式 相同点 总结 概述 命令模式和策略模式确实很相似,只是命令模式多了一个接收者(Receiver)角色.它们虽然同为行为类模式,但是两者的区别还是很明显的.策略模式的 ...

  6. 23种设计模式之代理模式

    文章目录 代理模式的定义与特点 代理模式的结构与实现 模式的结构 模式的实现 代理模式的应用场景 代理模式的应用实例 代理模式的扩展 代理模式分类 静态代理 动态代理 在有些情况下,一个客户不能或者不 ...

  7. 23种设计模式----中介者模式----行为型模式

    中介者模式 1.什么是中介者模式 2.中介者模式的角色 3.例子 3.1 项目结构 3.2 共同实体 3.3 抽象的中介者 3.4 抽象的被中介者 3.5 具体的中介者 3.6 具体的被中介者 3.7 ...

  8. 2.5万字详解23种设计模式—创建型模式(简单工厂、工厂方法、抽象工厂、单例-多线程安全详解、建造者、原型)的详细解读、UML类图

    本文简述了各大设计模式,并通过UML和代码详细说明.本文大约共 2.5W 字,建议收藏.下方是本文的目录: 一.设计模式的认识 二.设计模式的分类 根据其目的 根据范围 三.设计模式的优点 四.设计模 ...

  9. 23种设计模式之访问者模式

    访问者模式的定义 定义: 封装一些作用于某种数据结构中的各元素的操作, 它可以在不改变数据结构的前提下定义作用于这些元素的新的操作 通俗的说, 就是定义一个访问者角色, 当对指定角色进行访问时要通过访 ...

最新文章

  1. 推荐8个可以显著提高工作效率的办公神器
  2. dac解码芯片天梯_【关于AK4499引发的思考】选DAC,解码芯片追新有没有必要?
  3. VTK:Utilities之Box
  4. GameMaker Studio 中的组合技(Combo)设置
  5. IBM挺进云计算 自家内采用私有云模式
  6. InceptionNet V3整理总结
  7. Android UI的优化
  8. java创新_Java没有创新了吗?Java 13提供可提高生产率和效率的功能
  9. 迁移学习和数据扩充(附代码)
  10. ASP 中健壮的页结构的异常处理
  11. jQuery使用(四):DOM操作之查找兄弟元素和父级元素
  12. 线性代数张宇9讲 第六讲 线性方程组
  13. IE浏览器9.0与王码五笔不兼容的问题
  14. 华为鸿蒙主题设计,2020华为全球主题设计大赛,简直就是神仙打架啊!
  15. ubuntu安装无线网卡驱动(Ralink)
  16. tp5时间戳转换日期格式
  17. 旭日x3派,手势识别之Momo Quanghuang学习记录
  18. CSAPP Lab2:Bomb Lab
  19. 基于自适应反向学习的黏菌算法
  20. 计算机毕业设计Java互联网校园家教兼职平台(源码+系统+mysql数据库+lw文档)

热门文章

  1. 获取GIF图片中所有的单图
  2. java实现文件合并_Java实现文件分割和文件合并实例
  3. 现代软件工程系列 创新靠学分
  4. 现代软件工程系列 学生的精彩文章 (6) 项目总结
  5. app inventor2 打地鼠_春节越南旅行攻略必备手机APP推荐!旅游必备实用简单越南语...
  6. python文件路径拼接多出斜杠_浅谈python中拼接路径os.path.join斜杠的问题
  7. python循环经典例题_python练习题:循环打印嵌套列表
  8. 在matlab中求协方差,matlab里面的求协方差函数
  9. Java 哪些事最困扰你?
  10. python struct pack一个数组_Python中struct.pack的一个疑问