迭代器模式的定义如下:
Provide a way to access the elements of an aggregate object sequentially without exposing its underlying representation.
提供一种顺序访问容器元素的方式,同时不暴露其内部底层的实现细节。
根据定义我们也可以知道,迭代器模式是为容器服务的。那么什么是容器呢?能容纳对象的所有类型我们可以统称为容器。
迭代器模式的通用类图如下:

各个角色分析如下:
1、Iterator抽象迭代器:抽象迭代器一般是接口,定义对元素的遍历行为,一般如获取第一个元素,获取下一个元素,判断是否还有下一个元素
2、ConcreteIterator具体迭代器:对抽象迭代器定义的接口进行实现,完成对元素的遍历操作
3、Aggregate抽象容器:抽象容器定义迭代器的创建接口,同时作为容器,还要定义对元素的增加、删除接口
4、ConcreteAggregate:具体容器,负责实现抽象容器定义的接口。
迭代器模式的优点:
对容器内元素的访问统一进行了封装,不用关心内部实现细节,对用户来说是透明的
注意:
由于现在java中的容器基本jdk已经都实现了自己的迭代器,所以基本没有开发人员专门来写迭代器了。
网友评论