之所以要引入Iterator,是因为引入Iterator模式后可以将遍历与实现分离开。
Iterator模式提到了四个概念:Iterator(迭代器)、ConcreteIteator(具体的迭代器)、Aggregate(集合)、 ConcreteAggregate(具体的集合):
- Iterator负责定义按顺序逐个遍历元素的接口。
- ConcreIteator负责实现Iterator角色所定义的接口。
- Aggregate负责定义创建Iterator角色的接口。
- ConcreteAggregate负责实现Aggregate角色所定义的接口。
针对上述模式,编写了示例程序:
其中Main.java的代码为:
整体的结构框图:
BookShelf是书架(容器),可以存放很多的Book,BookShelfIterator是书架的迭代器,可以取出书架中当前书并且指向下一个方法(next方法),同时检测书架中是否还有书(hasNext方法)。
Aggregate和Iterator是Interface,一个表示集合的接口,一个是遍历集合的接口,BookShelf是Aggregate的具体实现,BookShelfIterater是Iterator的具体实现。
程序运行结果: