一、我的理解
迭代器模式是将集合的遍历方式独立出来,在顺序遍历时只需要使用迭代器即可,而不用去考虑底层集合存储的差异性。
二、实现方式
迭代器接口中定义遍历函数,然后由具体的集合类自己实现相应的遍历操作
三、实例
Java实例
Iterator接口:统一迭代器要进行的操作
package com.study.dp.iterator;
public interface Iterator {
public boolean hasNext();
public Object next();
}
Container接口:定义集合类的统一行为,获取迭代器
package com.study.dp.iterator;
public interface Container {
public Iterator getIterator();
}
NameRepository类:实际的集合类,其内部定义了内部类NameIterator,而且为私有内部类,这样可以增加代码的封闭性,使得外部代码无法访问集合类的存储,否则的话则需要向外暴露接口由类从外部来访问集合实际数据
package com.study.dp.iterator;
public class NameRepository implements Container {
public String[] names = {"Rober", "John", "Julie", "Lora"};
@Override
public Iterator getIterator() {
return new NameIterator();
}
private class NameIterator implements Iterator{
int index;
@Override
public boolean hasNext() {
return index<names.length;
}
@Override
public Object next() {
if(this.hasNext()) {
return names[index++];
}
return null;
}
}
}
四、应用场景
1.Java中集合类的迭代器
(基于jdk1.8版本)JDK中的Iterable接口相当于上文中的Container接口,而Iterator接口则相当于上文中的Iterator接口。