迭代器模式
定义
提供一种方法顺序访问一个聚合对象中各个元素,而不需要暴露该对象的内部表示
类图

- Iterator
    
- 迭代器定义访问和遍历元素的接口
 
 - ConcreteIterator
    
- 具体迭代器实现迭代器接口
 - 对该聚合遍历时跟踪当前位置
 
 - Aggregate
    
- 聚合定义创建相应迭代器对象的接口
 
 - ConcreteAggregate
    
- 具体聚合实现创建相应迭代器的接口,该操作返回concreteIterator的一个适当的实例
 
 
内部迭代器和外部迭代器
动机
- 一个聚合对象,应该提供一种方法来让别人可以访问它的元素,而又不需暴露它的内部结构。
 - 对遍历行为抽象出一个对象,遍历行为可以复用。
 
使用场景
- 访问一个聚合对象的内容而无需暴露它的内部标识
 - 支持对聚合独享的多种遍历
 - 为遍历不同的聚合结构提供一个统一的接口(即支持多态迭代)
 
优缺点
- 它支持以不同的方式遍历一个聚合
 - 迭代器简化了聚合的接口 有了迭代器的遍历接口,聚合本身就不再需要类似的遍历接口了,这样就简化了聚合的接口
 - 在同一个聚合上可以有多个遍历,每个迭代器保持它自己的遍历状态,因此你可以同时进行多个遍历
 
体现的设计原则与思想
- 封装: 对遍历行为封装抽象,定义遍历算法,可以复用。
 
实例
太多了
- java集合包里的collection子类内部都实现了Iterator
 
参考