JDK设计模式(十五)迭代器模式

1. 概述

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

2. 解决的问题

把游走的任务放在迭代器上,而不是聚合上,这样简化了聚合的接口和实现,也让责任各得其所。

3. 模式中的角色

1、抽象迭代器(Iterator):定义出遍历元素所需的接口。

2、具体迭代器(ConcreteIterator):实现Iterator接口,并保持迭代过程中的游标位置。

3、聚集(Aggregate):给出创建迭代器(Iterator)对象的接口。

4、具体聚集(ConcreteAggregate):实现创建迭代器(Iterator)对象的接口,返回一个合适的具体迭代器实例。

5、客户端(Client):持有对聚集及其迭代子对象的引用,调用迭代器对象的迭代接口。

4、模式解读

迭代器模式的类图如下所示

5、JDK涉及到的设计模式

JDK中Iterator和Collection

ArrayList为具体聚合对象,创建了具体的ArrayList$Itr和ArrayList$ListItr的具体迭代器类。

6、模式总结

优点

1、迭代器模式简化了聚集的界面。

2、因为每一个聚集对象可以有多个迭代器对象,每个迭代器状态是独立的。

3、由于遍历算法被封装在迭代器角色里面,因此迭代的算法可以独立于聚集角色变化。

缺点

1、迭代器模式给客户端一个聚集被顺序化的感觉。

2、迭代器给出的聚集元素没有类型特征。