迭代器模式很常见又很不常用。因为很多语言都实现了迭代器模式,在开发过程中被作为常用工具,而不需要重新实现。
定义
提供一种方法访问一个容器对象中各个元素,而又不暴露对象内部细节。
通用类图如下:

类图中有4个角色:
Iterator抽象迭代器定义访问和遍历元素的接口,会有一些基本方法:next(),isDone()/hasNexrt(),remove()
Aggregate抽象容器,负责提供创建具体迭代器的接口,Java中是iterator()方法
剩余两个是它们的实现。
使用场景
- 很多语言都自带了这个设计模式,所以现在很少会手动实现迭代器模式,甚至有人建议从23中设计模式中删除它
- 迭代器模式常和for循环功能上有重叠,当然也有区别,比如for循环适合在顺序结构容器中,迭代器在无序容器(Set)中也能工作,因此它们在ArrayList和LinkedList中有不同的性能表现
参考:
设计模式之禅