介绍
- 定义:提供一种方法,顺序访问一个集合对象中的各个元素,而不暴露该对象的内部表示
- 类型:行为型
- 适用场景:
- 访问一个集合对象的内容而无需暴露它的内部表示
- 为遍历不同的集合结构提供一个统一的接口
- 优点
- 分离集合对象的遍历行为
- 缺点
- 类的个数成对增加
- 相关设计模式
- 迭代器模式和访问者模式
对C++,使用过STL的相关集合类的iterator,很容易理解。也就是一个类相当于一个集合,此集合中有许多的对象。我们想要访问(add,remove,get)集合内的对象。可以通过实现一个对外的迭代器(Iterator)来实现此功能。
一般情况下我们类对外有如下代码接口:
IteratorClass getIterator();
而对于IteratorClass
类,一般都会有如下接口
// E代表某种,集合内部元素的类型
E next();
boolean hasNext();
而外部一般可以这样遍历集合类中的元素
// 假定实现此接口的类为 Box
// 假定我们上下文已经有了一个Box类的实例box
IteratorClass it = box.getIterator();
while( it.hasNext() ){
System.out.println( it.next() );
}