前言:迭代器模式使数据与遍历相分离,提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示。适用范围:1、访问一个聚合对象的内容而无须暴露它的内部表示。 2、需要为聚合对象提供多种遍历方式。 3、为遍历不同的聚合结构提供一个统一的接口。
JAVA语言版迭代器模式
创建迭代器接口:
public interface Iterator {
boolean hasNext();
Object next();
}
创建容器接口:
public interface Container {
Iterator getIterator();
}
创建容器实现类:
public class NameRepository implements Container {
private String names[] = {"小明", "小张", "小王", "小李", "小丽"};
@Override
public Iterator getIterator() {
return new NameIterator();
}
private class NameIterator implements Iterator {
private int index=0;
@Override
public boolean hasNext() {
if (index < names.length) {
return true;
}
return false;
}
@Override
public Object next() {
if (hasNext()) {
return names[index++];
}
return null;
}
}
}
用IteratorPatternDemo演示迭代器模式:
public class IteratorPatternDemo {
public static void main(String[] args) {
NameRepository nameRepository= new NameRepository();
Iterator iterator =nameRepository.getIterator();
while (iterator.hasNext()){
System.out.println(iterator.next());
}
}
}
输出结果:
小明
小张
小王
小李
小丽