Java设计模式之迭代器模式

作者 : 开心源码 本文共1028个字,预计阅读时间需要3分钟 发布时间: 2022-05-12 共171人阅读

迭代器是针对集合对象而生的,对于集合对象而言,必然涉及到集合元素的增加删除操作,同时也一定支持遍历集合元素的操作,我们此时可以把遍历操作也放在集合对象中,但这样的话,集合对象就承担太多的责任了,面向对象设计准则中有一条是单一职责准则,所以我们要尽可能地分离这些职责,用不同的类去承担不同的职责。迭代器模式就是用迭代器类来承担遍历集合元素的职责。分离集合对象的遍历行为,笼统出一个迭代器类来负责,这样既可以做到不暴露集合的内部结构,又可让外部代码透明的访问集合内部的数据。

迭代器模式的角色构成

(1)迭代器角色(Iterator):定义遍历元素所需要的方法,一般来说会有这么三个方法:获得下一个元素的方法next(),判断能否遍历结束的方法hasNext()),移出当前对象的方法remove(),

(2)具体迭代器角色(Concrete Iterator):实现迭代器接口中定义的方法,完成集合的迭代。

(3)容器角色(Aggregate): 一般是一个接口,提供一个iterator()方法,例如java中的Collection接口,List接口,Set接口等

(4)具体容器角色(ConcreteAggregate):就是笼统容器的具体实现类,比方List接口的有序列表实现ArrayList,List接口的链表实现LinkList,Set接口的哈希列表的实现HashSet等。

静态迭代子和动态迭代子:

静态迭代子由聚集对象创立,并持有聚集对象的一份快照,在产生后这个快照的内容就不再变化,用户端可以继续修改原聚集的内容,但是迭代子对象不会反映出聚集的新变化;

静态迭代子的好处是它的安全性和简易性,换言之,静态迭代子易于实现,不容易出现错误,但是因为静态迭代子将原聚集复制了一份,因而它的短处是对时间和内存资源的消耗;

动态迭代子与静态迭代子完全相反,在迭代子被产生之后,迭代子还保持着对聚集元素的引用,因而,任何对原聚集内容的修改都会在迭代子对象上反映出来。

完整的动态迭代子不容易实现,但是简化的动态迭代子并不难实现。我们遇到的迭代子就是简化的动态迭代子。

“我们相信人人都可以成为一个IT大神,现在开始,选择一条阳光大道,助你入门,学习的路上不再迷茫。这里是北京尚学堂,初学者转行到IT行业的聚集地。”

?为了让学习变得轻松、高效,今天给大家免费分享一套Java教学资源。帮助大家在成为Java架构师的道路上披荆斩棘。需要资料的欢迎加入学习交流群:9285,05736

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » Java设计模式之迭代器模式

发表回复