一、概述
迭代器模式提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示。
二、 解决的问题
遍历整个整合对象
三、模式中的角色
- 1、抽象迭代器(Iterator):定义出遍历元素所需的接口。
- 2、具体迭代器(ConcreteIterator):实现Iterator接口,并保持迭代过程中的游标位置。
- 3、聚集(Aggregate):给出创建迭代器(Iterator)对象的接口。
- 4、具体聚集(ConcreteAggregate):实现创建迭代器(Iterator)对象的接口,返回一个合适的具体迭代器实例。
- 5、客户端(Client):持有对聚集及其迭代子对象的引用,调用迭代器对象的迭代接口。
四、模式解读
迭代器模式的类图如下所示
五、JDK涉及到的设计模式
JDK中Iterator和Collection
ArrayList为具体聚合对象,创建了具体的ArrayList Itr和ArrayList I t r 和 A r r a y L i s t ListItr的具体迭代器类。
六、模式总结
优点
- 1、迭代器模式简化了聚集的界面。
- 2、因为每一个聚集对象可以有多个迭代器对象,每个迭代器状态是独立的。
- 3、由于遍历算法被封装在迭代器角色里面,因此迭代的算法可以独立于聚集角色变化。
缺点
- 由于迭代器模式将存储数据和遍历数据的职责分离,增加新的聚合类需要对应增加新的迭代器类,类的个数成对增加,这在一定程度上增加了系统的复杂性。
适用场景
- 1、访问一个聚合对象的内容而无须暴露它的内部表示。
- 2、需要为聚合对象提供多种遍历方式。
- 3、为遍历不同的聚合结构提供一个统一的接口。