设计模式之迭代器模式(Iterator)

本文深入探讨迭代器模式的核心概念,如何通过迭代器模式简化聚合对象的访问方式,避免暴露内部表示,同时遵循单一职责原则。阐述了如何在Java集合框架中利用迭代器模式实现高效遍历,以及如何设计一个有效的迭代器接口,确保客户端代码的健壮性和可维护性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

 

迭代器模式能让我游走于聚合内的每一个元素,而又不暴露其内部的表示。把游走的任务放在迭代器上,而不是聚合上。这样简化了聚合的接口和实现,也让责任各得其所。

 

迭代器模式UML图:


当然,这里我们的迭代器接口是自己定义的迭代器接口,我们完全可以使用JDK自带的java.util.Iterator接口。

 

由于JDK支持迭代器模式,并且在他的集合框架中,大部分集合都已经实现了迭代器的创建,让该模式变得更加简单,因此,也给我们省下了不少力气来学习和使用迭代器模式。

但是,迭代器模式下依然有值得我们学习的地方,那就是他的设计思想:

  • 隐藏其内部的细节
  • 单一职责的设计原则

设计原则:单一职责

一个类应该只有一个引起其变化的原因

 

就是说类最好只赋予一种职责,这样其能适应单一的变化,如果一个类的职责过多,任何一个职责的变化都可能会引起整个类的变化,甚至会引起其他不相关的职责代码或者结构的变化,从而影响其扩展性和维护性。

 

永远不要返回一个null迭代器,让迭代器的hasNext方法返回false更好,这样客户端就不用去写验证null的差错代码啦。

 

参考资料:

Head First 设计模式 (中国电力出版社)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值