迭代器模式最经典的应用应该就是Java中的迭代器了,在Java集合Collection接口就继承了Iterable。
种模式用于顺序访问集合对象的元素,不需要知道集合对象的底层表示。
迭代器模式属于设计模式里的行为模式。
优点:
- 它支持以不同的方式遍历一个聚合对象。
- 迭代器简化了聚合类。
- 在同一个聚合上可以有多个遍历。
缺点:
- 由于迭代器模式将存储数据和遍历数据的职责分离,增加新的聚合类需要对应增加新的迭代器类,类的个数成对增加,这在一定程度上增加了系统的复杂性。
代码:
//定义迭代接口
interface Iterator{
public boolean hasNext(); //是否有下一个元素,即还有没有没有遍历到的元素
public Object next(); //返回元素
}
interface Container{ //获得迭代器
public Iterator getIterator();
}
class NameRepository implements Container{
public String names[]={"L","H","J"};
public Iterator getIterator() {
return new NameIterator();
}
private class NameIterator implements Iterator{
int index; //指针,用来遍历集合对象
public boolean hasNext() {
if(index<names.length){
return true;
}
return false;
}
public Object next() {
if(this.hasNext()){
return names[index++]; //返回元素,并将指针后移一位
}
return null;
}
}
}
public class IteratorPatternDemo {
public static void main(String[] args) {
NameRepository nameRepository=new NameRepository();
for(Iterator iter=nameRepository.getIterator();iter.hasNext();){
String name=(String)iter.next();
System.out.println("Name:"+name);
}
}
}
输出:
Name:L
Name:H
Name:J