23种设计模式之迭代器模式
迭代器模式的定义
定义: 它提供一种方法访问一个容器对象中各个元素, 而又不需暴露该对象的内部细节
其类图如下:
其中角色:
- Iterator 抽象迭代器: 抽象迭代器负责定义访问和遍历元素的接口, 而且基本上是有固定的三个方法: first()获得第一个元素, next()访问下一个元素, isDone() 是否已经访问到末尾
- ConcreteIteraor 具体迭代器: 实现抽象 迭代器, 完成容器元素的遍历
- Aggregate 抽象容器: 负责提供创建具体迭代器的接口
- ConcreteAggregate 具体容器: 实现抽象容器定义的方法, 创建出容纳迭代器的对象
其代码实现如下:
抽象迭代器:
具体迭代器:
抽象容器:
具体容器:
场景类:
迭代器模式的应用
其实, 现在基本上所有的高级语言都实现了迭代器, 基本上跟很少有项目再独立写迭代器了.
迭代器现在应用的越来越广泛了, 甚至已经成为一个最基础的工具
如果做Java开发, 尽量不要自己写迭代器模式. 使用Java提供的Iterator一般就能满足要求了
23种设计模式之迭代器模式相关推荐
- 23种设计模式——装饰者模式
文章目录 23种设计模式--装饰者模式 1.装饰者模式概述 2.装饰者模式的结构 3.装饰者模式的实现 4.装饰者模式的应用场景 23种设计模式--装饰者模式 1.装饰者模式概述 背景 有些人为了早上 ...
- 实践GoF的23种设计模式:建造者模式
本文分享自华为云社区<[Go实现]实践GoF的23种设计模式:建造者模式>,作者: 元闰子. 简述 在程序设计中,我们会经常遇到一些复杂的对象,其中有很多成员属性,甚至嵌套着多个复杂的对象 ...
- 【Go实现】实践GoF的23种设计模式:命令模式
上一篇:[Go实现]实践GoF的23种设计模式:代理模式 简单的分布式应用系统(示例代码工程):https://github.com/ruanrunxue/Practice-Design-Patter ...
- 23种设计模式7_代理模式之一静态代理
23种设计模式7_代理模式之一静态代理 1 基本介绍 代理模式:为其他对象提供一种代理以控制对这个对象的访问 代理模式也叫委托模式,它是一项基本设计技巧.许多其他的模式,如状态模式.策略模式.访问者模 ...
- 23种设计模式之命令模式和策略模式的区别
文章目录 概述 命令模式 策略模式 相同点 总结 概述 命令模式和策略模式确实很相似,只是命令模式多了一个接收者(Receiver)角色.它们虽然同为行为类模式,但是两者的区别还是很明显的.策略模式的 ...
- 23种设计模式之代理模式
文章目录 代理模式的定义与特点 代理模式的结构与实现 模式的结构 模式的实现 代理模式的应用场景 代理模式的应用实例 代理模式的扩展 代理模式分类 静态代理 动态代理 在有些情况下,一个客户不能或者不 ...
- 23种设计模式----中介者模式----行为型模式
中介者模式 1.什么是中介者模式 2.中介者模式的角色 3.例子 3.1 项目结构 3.2 共同实体 3.3 抽象的中介者 3.4 抽象的被中介者 3.5 具体的中介者 3.6 具体的被中介者 3.7 ...
- 2.5万字详解23种设计模式—创建型模式(简单工厂、工厂方法、抽象工厂、单例-多线程安全详解、建造者、原型)的详细解读、UML类图
本文简述了各大设计模式,并通过UML和代码详细说明.本文大约共 2.5W 字,建议收藏.下方是本文的目录: 一.设计模式的认识 二.设计模式的分类 根据其目的 根据范围 三.设计模式的优点 四.设计模 ...
- 23种设计模式之访问者模式
访问者模式的定义 定义: 封装一些作用于某种数据结构中的各元素的操作, 它可以在不改变数据结构的前提下定义作用于这些元素的新的操作 通俗的说, 就是定义一个访问者角色, 当对指定角色进行访问时要通过访 ...
最新文章
- 推荐8个可以显著提高工作效率的办公神器
- dac解码芯片天梯_【关于AK4499引发的思考】选DAC,解码芯片追新有没有必要?
- VTK:Utilities之Box
- GameMaker Studio 中的组合技(Combo)设置
- IBM挺进云计算 自家内采用私有云模式
- InceptionNet V3整理总结
- Android UI的优化
- java创新_Java没有创新了吗?Java 13提供可提高生产率和效率的功能
- 迁移学习和数据扩充(附代码)
- ASP 中健壮的页结构的异常处理
- jQuery使用(四):DOM操作之查找兄弟元素和父级元素
- 线性代数张宇9讲 第六讲 线性方程组
- IE浏览器9.0与王码五笔不兼容的问题
- 华为鸿蒙主题设计,2020华为全球主题设计大赛,简直就是神仙打架啊!
- ubuntu安装无线网卡驱动(Ralink)
- tp5时间戳转换日期格式
- 旭日x3派,手势识别之Momo Quanghuang学习记录
- CSAPP Lab2:Bomb Lab
- 基于自适应反向学习的黏菌算法
- 计算机毕业设计Java互联网校园家教兼职平台(源码+系统+mysql数据库+lw文档)
热门文章
- 获取GIF图片中所有的单图
- java实现文件合并_Java实现文件分割和文件合并实例
- 现代软件工程系列 创新靠学分
- 现代软件工程系列 学生的精彩文章 (6) 项目总结
- app inventor2 打地鼠_春节越南旅行攻略必备手机APP推荐!旅游必备实用简单越南语...
- python文件路径拼接多出斜杠_浅谈python中拼接路径os.path.join斜杠的问题
- python循环经典例题_python练习题:循环打印嵌套列表
- 在matlab中求协方差,matlab里面的求协方差函数
- Java 哪些事最困扰你?
- python struct pack一个数组_Python中struct.pack的一个疑问