先看下图:
迭代器模式是围绕着上图标黄的集合接口实现来分析总结出来的编程规则:
假设有一个集合接口List的实现类ArrayList,现在外部要遍历ArrayList中的所有元素。在List接口中定义一个返回iterator接口的方法,在ArrayList中实现List中定义的返回iterator接口的方法,该方法创建并返回一个iterator接口的实现类的对象。ArrayList可以根据自身的需要,创建不同的iterator接口的实现类的对象。
iterator接口中定义几个执行循环操作的方法,这些方法的具体实现由iterator接口的实现类来实现。
迭代器模式的作用:将遍历算法封装到Iterator的具体实现中,以便将遍历算法与业务解耦。
下面以jdk中ArrayList,List,Itr,Iterator为例:
注意代码有删除,只列出了迭代器模式相关代码
public interface List{
Iterator iterator();
}
public class ArrayList implements List {
public Iterator iterator() {
return new Itr();
}
private class Itr implements Iterator {
Itr() {}
public boolean hasNext() {
// 具体实现
}
public E next() {
// 具体实现
}
}
}
public interface Iterator {
boolean hasNext();
E next();
}