Java与设计模式(二十六)行为型--迭代器模式

一、概述

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

二、 解决的问题

遍历整个整合对象

三、模式中的角色

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

四、模式解读

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

Java与设计模式(二十六)行为型--迭代器模式

五、JDK涉及到的设计模式

JDK中Iterator和Collection

Java与设计模式(二十六)行为型--迭代器模式

ArrayList为具体聚合对象,创建了具体的ArrayListItrArrayListListItr的具体迭代器类。

六、模式总结

优点

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

缺点

  • 由于迭代器模式将存储数据和遍历数据的职责分离,增加新的聚合类需要对应增加新的迭代器类,类的个数成对增加,这在一定程度上增加了系统的复杂性。

适用场景

  • 1、访问一个聚合对象的内容而无须暴露它的内部表示。
  • 2、需要为聚合对象提供多种遍历方式。
  • 3、为遍历不同的聚合结构提供一个统一的接口。