迭代器模式

定义

提供一种方法顺序访问一个聚合对象中各个元素,而不需要暴露该对象的内部表示

类图 类图

  1. Iterator
    • 迭代器定义访问和遍历元素的接口
  2. ConcreteIterator
    • 具体迭代器实现迭代器接口
    • 对该聚合遍历时跟踪当前位置
  3. Aggregate
    • 聚合定义创建相应迭代器对象的接口
  4. ConcreteAggregate
    • 具体聚合实现创建相应迭代器的接口,该操作返回concreteIterator的一个适当的实例

内部迭代器和外部迭代器

动机

  1. 一个聚合对象,应该提供一种方法来让别人可以访问它的元素,而又不需暴露它的内部结构。
  2. 对遍历行为抽象出一个对象,遍历行为可以复用。

使用场景

  1. 访问一个聚合对象的内容而无需暴露它的内部标识
  2. 支持对聚合独享的多种遍历
  3. 为遍历不同的聚合结构提供一个统一的接口(即支持多态迭代)

优缺点

  1. 它支持以不同的方式遍历一个聚合
  2. 迭代器简化了聚合的接口 有了迭代器的遍历接口,聚合本身就不再需要类似的遍历接口了,这样就简化了聚合的接口
  3. 在同一个聚合上可以有多个遍历,每个迭代器保持它自己的遍历状态,因此你可以同时进行多个遍历

体现的设计原则与思想

  1. 封装: 对遍历行为封装抽象,定义遍历算法,可以复用。

实例

太多了

  1. java集合包里的collection子类内部都实现了Iterator

参考

wikipedia