Iterator Pattern,即迭代时模式,按照顺序依次遍历集合内的每一个元素,而不用了解集合的底层实现,属于行为类的设计模式。为了方便理解记忆,我也会称其为遍历模式。
下面是一个迭代器模式的简单案例。
Iterator 定义了迭代接口, 仅 hasNext 和 next 两个方法。Container 定义了集合的接口,必须包含一个返回迭代器类 Iterator 的方法。NameRepository 是容器的具体类,实现 Container 接口,并拥有一个内部类 NameIterator ,该内部类实现了 Iterator 接口,用于遍历容器的全部元素。IteratorPatternDemo 演示迭代器模式。
代码实现
Iterator 接口,定义遍历的两个方法
public interface Iterator { public boolean hasNext(); public Object next(); }
Container 接口,定义返回迭代器 Iterator 的方法
public interface Container { public Iterator getIterator(); }
NameRepository 是具体的容器内,含有一个内部类,内部类实现了 Iterator 接口,提供遍历集合元素的功能。
public class NameRepository implements Container { private String[] names = "apple,banana,pear,orange".split(","); @Override public Iterator getIterator() { return new NameIterator(); } private class NameIterator implements Iterator{ private int index; NameIterator(){ index = 0; } @Override public boolean hasNext() { return this.index < names.length; } @Override public Object next() { Object res = names[index]; index++; return res; } } }
演示代码
public class IteratorPatternDemo { public static void main(){ NameRepository nameRepository = new NameRepository(); Iterator iter = nameRepository.getIterator(); while(iter.hasNext()){ System.out.println(iter.next()); } } }
参考资料