大战设计模式【12】—— 迭代器模式

迭代器模式(Iterator)

 

设计模式使用的例子https://github.com/LinkinStars/DesignPatternsAllExample

 

一、定义

提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示。

 

二、结构

Iterator(抽象迭代器):定义了访问和遍历元素的接口,声明了用于遍历数据元素的方法。

ConcreteIterator(具体迭代器):它实现了抽象迭代器接口,完成对聚合对象的遍历。

Aggregate(抽象聚合类):用于存储和管理元素对象,声明一个CreateIterator()方法用于创建一个迭代器对象,充当抽象迭代器工厂角色。

ConcreteAggregate(具体聚合类):实现了在抽象聚合类中声明的CreateIterator()方法,返回一个对应的具体迭代器ConcreteIterator实例。

 

三、优点

支持以不同方式遍历一个聚合对象,在同一个聚合对象上可以定义多种便利方式。

增加新的聚合类和迭代器类都很方便,无须修改原有代码,符合开闭原则。

 

四、缺点

增加新的聚合类需要对应增加新的迭代器类

 

五、应用场景

访问一个聚合对象的内容而无须暴露它的内部表示。

需要为一个聚合对象提供多种遍历方式。

 

六、个人总结

1、如果你已经了解java中的迭代器,那么迭代器设计模式应该很容易理解,简单的说,java利用这样的设计模式设计出了它的迭代器

对于我们熟知的那些集合都可以使用迭代器去遍历

2、例子中我们自己创建了迭代器的接口,这是我们学习所需要了解内部机制所用的

在实际中我们通常使用java.util.Iterator

 

 

 

参考博客:http://www.cnblogs.com/edisonchou/p/7442138.html

转载于:https://www.cnblogs.com/linkstar/p/7747226.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/487347.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MIT最新报告:完全无人驾驶仍需10年,马斯克:特斯拉已经实现

来源:机器学习研究组订阅号两年前,麻省理工学院成立了「未来工作特别小组」,这个小组目前有20多人,旨在研究「大众创新年代」的工作演变。近期,他们发表了一个最新的报告,重点关注了自动驾驶领域的进展。而…

win7 linux双系统win7启动不了怎么办,双系统windows打不开怎么办|苹果双系统win7打不开怎么解决|mac双系统打不开解决方法-系统城...

2016-03-30 19:28:38  浏览量:22401很多用户都会在电脑上安装Windows双系统甚至多系统,在开机的时候就会出现一个启动菜单让用户选择,如果没有选择将会自动启动默认的系统,那么双系统要怎么修改默认的启动项呢?今天系…

css 外边距合并

1. 当一个元素出现在另一个元素上面时,第一个元素的下外边距会和第二个元素的上边距合并(取较大值) 2. 当一个元素包含另一个元素中时(没有内边距或边框把外边距分隔开),会发生合并; 2.1条件父元素无边框 2.2 父元素和子元素外边距之间无其他分格元素 3.…

是时候抛弃旧的摩尔定律了

来源:IEEE转自:悦智网在技术领域最著名的准则之一就是摩尔定律。在过去55年的时间里,“摩尔定律”已经描述并预测了晶体管的缩小,如一组称为技术节点的数字在过去以大约每两年一次的频率更新。像一些基于物理学的世界末日时钟一样…

网络对抗技术—-网络对抗实验四

学 号:201421430008 中国人民公安大学 Chinese people’ public security university 网络对抗技术 实验报告 实验四 恶意代码技术 学生姓名 吴宙杨 年级 2014 区队 3 指导教师 高见老师 信息技术与网络安全学院 2016年11月7日 实验任务总纲 2016—20…

linux int64_t 头文件,这对int64_t的处理是GCC和Clang的错误吗?

你不需要去POSIX对它进行排序,ISO C控制这个特定的方面(下面的参考是C11标准).这个答案的其余部分将成为所有“语言律师”,以显示为什么将未添加的行为添加到已签名的值中,以及为什么两个答案(真和假)都有效.首先,您在ISO中未定义int64_t的争论并不十分正确.第7.20.1.1节精确宽…

北大副校长詹启敏回应“25篇论文造假”,​PubPpeer到底靠不靠谱?

来源:科研大匠今日,北京大学常务副校长、北大医学部主任、中国工程院院士詹启敏在个人公众号“潇敏 ScienceArt”上发布《詹启敏关于相关情况的说明》文章,回应了昨日 DeepTech 对北京大学常务副校长詹启敏 25 篇相关论文受到学术不端质疑。事…

c语言课设报告时钟vc环境,C语言课程设计报告模拟时钟转动程序

C语言课程设计报告模拟时钟转动程序 课程设计报告题 目 课 程 名 称 结构化程序设计课程设计 院 部 名 称 专 业 班 级 学 生 姓 名 王蕾 学 号 课程设计地点 课程设计学时 指 导 教 师 金陵科技学院教务处制 程序设计综合课程设计I目 录第一章 课程设计的目的和要求 1.1 C 语言…

用人工智能监督人工 遭遇非技术困局

来源:科技日报远程办公常态化催生云监工软件市场。近日一款名为Enaible的AI监工软件销售火爆,这种AI软件不仅可以盯着员工干活,还可以对员工的工作效率进行打分……一场新冠肺炎疫情,让远程办公逐渐成为常态。钉钉、飞书、企业微信…

Windows10 【系统周期表】【系统下载表】【大型软件表】

系统周期表 商用名称商用英文名代号版本系统版本上市日期服务周期备注Windows 10无Threshold 1150710.0.10240.174432015.07.292015.07.29 - 2015.11.12默认值Windows 10十一月更新Windows 10 November UpdateThreshold 2151110.0.10586.9622015.11.122015.11.12 - 2016.08.02W…

c语言实现图像拼接程序,opencv2实现10张图像上下左右拼接融合分享!

本文实例为大家分享了opencv2实现多张图像上下左右拼接融合的具体代码,供大家参考,具体内容如下在前面的“opencv2两张图像拼接融合_基于SURF特征提取”博文中,实现了两张左右图像的拼接融合,后来我也实现了多张图像的拼接融合。但…

2020年中国城市人工智能发展指数报告

来源 | 36氪研究院(转载请注明来源)编辑 | 张775大维度、20个三级指标,全面剖析中国36个城市人工智能发展情况2020年是全面建成小康社会与“十三五”规划收官之年,为了实现全面建设小康社会的发展目标、增强经济发展韧性&#xff…

JQuery使用笔记

1.选择器 id选择器:  $(#btnShow) class选择器:  $(.banner) tag选择器:  $(input) 2.常用方法 取 / 设value: $(#btnShow).val()  / $(#btnShow).val(sss) 取 / 设text:  $(#btnShow).text() /  $(#btnShow).text(sss) 取 / 设innerHtml  $(#btnShow).html()…

c语言程序设计 函数说课,《C语言程序设计》之函数说课课件.ppt

您所在位置:网站首页 > 海量文档&nbsp>&nbsp计算机&nbsp>&nbspC/C资料《C语言程序设计》之函数说课课件.ppt16页本文档一共被下载:次,您可全文免费在线阅读后下载本文档。下载提示1.本站不保证该用户上传的文档完整性&#x…

中科院院士:40年7位诺奖得主,美国贝尔实验室做对了什么?

来源:科学网作者:夏建白本文介绍高科技的摇篮之一―― 美国贝尔实验室。本文将不具体介绍在贝尔实验室中发明晶体管、集成电路、激光器、光通信等的具体研究过程,而是介绍贝尔实验室的历届领导和管理思想,尝试探讨其取得这样重大成…

Git中的bash与CMD的区别

Windows在使用git工具时,可以看到有两个命令输入窗: 1. Git CMD 2. Git Bash 两者的区别:Bash是基于CMD的,Bash在CMD的基础上新增了一些命令和功能,故建议使用Bash更方便。 Git GUI 是一个图形操作页面。 参考链接&…

c语言 void**类型转换,void *和其他指针的转化

1在c语言中从int * 到 char *的转化不兼容,但是编译能通过。将void *和其他类型的指针相互赋值不出现警告,这在c语言中是允许的。2在c中类型要求很高,不允许不同类型指针之间的相互赋值,void *指针例外(任何类型指针都可以赋值给v…

麻省理工最新报告:完全无人驾驶仍需10年

来源:机器人网、新智元两年前,麻省理工学院成立了「未来工作特别小组」,这个小组目前有20多人,旨在研究「大众创新年代」的工作演变。近期,他们发表了一个最新的报告,重点关注了自动驾驶领域的进展。而得出…

Python安装pip

在Python中,安装第三方模块,是通过包管理工具pip完成的。 如果你正在使用Windows,安装Python的时候,确保安装时勾选了pip和Add python.exe to Path。 在命令提示符窗口下尝试运行pip,如果Windows提示未找到命令&#x…

一键多功能按键识别c语言,单片机一键多功能按键识别设计

1.实验任务如图4.9.1所示,开关SP1接在P3.7/RD管脚上,在AT89S51单片机的P1端口接有四个发光二极管,上电的时候,L1接在P1.0管脚上的发光二极管在闪烁,当每一次按下开关SP1的时候,L2接在P1.1管脚上…