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