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

1. 概述

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

2. 解决的问题

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

3. 模式中的角色

1、抽象迭代器(Iterator):定义出遍历元素所需的接口。
2、具体迭代器(ConcreteIterator):实现 Iterator 接口,并保持迭代过程中的游标位置。
3、聚集(Aggregate):给出创建迭代器(Iterator)对象的接口。
4、具体聚集(ConcreteAggregate):实现创建迭代器(Iterator)对象的接口,返回一个合适的具体迭代器实例。
5、客户端(Client):持有对聚集及其迭代子对象的引用,调用迭代器对象的迭代接口。

4、模式解读

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

5、JDK 涉及到的设计模式

JDK 中 Iterator 和 Collection
image.png
ArrayList 为具体聚合对象,创建了具体的 ArrayList$Itr和ArrayList$ListItr 的具体迭代器类。

6、模式总结

优点

1、迭代器模式简化了聚集的界面。
2、因为每一个聚集对象可以有多个迭代器对象,每个迭代器状态是独立的。
3、由于遍历算法被封装在迭代器角色里面,因此迭代的算法可以独立于聚集角色变化。

缺点

1、迭代器模式给客户端一个聚集被顺序化的感觉。
2、迭代器给出的聚集元素没有类型特征。

https://alicharles.oss-cn-hangzhou.aliyuncs.com/static/images/mp_qrcode.jpg
文章目录
  1. 1. 概述
  2. 2. 解决的问题
  3. 3. 模式中的角色
  4. 4、模式解读
  5. 5、JDK 涉及到的设计模式
  6. 6、模式总结
    1. 优点
    2. 缺点