迭代器模式(Iterator)
走遍天下,世界那么大,我想去看看
在计算机中,Iterator意为迭代器,迭代有重复的含义,在程序中,更有“遍历”的含义
如果给定一个数组,我们可以通过for循环来遍历这个数组,这种遍历就叫做迭代
对于数组这种数据结构,我们称为是可迭代的
所以
迭代器就是可以用来对于一个数据集合进行遍历的对象
抽象迭代器角色Iterator
定义遍历元素所需要的接口
具体的迭代器ConcreteIterator
实现了Iterator接口,并且跟踪当前位置
抽象集合容器角色Aggregate
定义创建相应迭代器的接口(方法)
就是一个容器类,并且定义了一个返回迭代器的方法
具体的容器角色ConcreteAggregate
Aggregate的子类,并且实现了创建Iterator对象的接口,也就是返回一个ConcreteIterator实例
客户端角色Client
持有容器对象以及迭代器对象的引用,调用迭代对象的迭代方法遍历元素
迭代器模式中,通过一个外部的迭代器来对容器集合对象进行遍历。
迭代器定义了遍历访问元素的协议方式。
容器集合对象提供创建迭代器的方法。
示例代码
Aggregate角色
提供了iterator()获取Iterator
package iterator; public abstract class Aggregate { abstract Iterator iterator(); abstract Object get(int index); abstract int size(); }
ConcreateAggregate角色
内部使用一个Object数组,数组直接通过构造方法传递进去(只是为了演示学习模式,不要纠结这算不上一个容器)




