迭代器模式,提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。迭代器模式结构图如下所示: iterator Iterator迭代器抽象类:

abstract class Iterator{
    public abstract Object First();
    public abstract Object Next();
    public abstract boolean IsDone();
    public abstract Object CurrentItem();
}

Aggregate聚集抽象类:

abstract class Aggregate{
    public abstract Iterator CreateIterator();
}

ConcreteIterator具体迭代器类,继承Iterator:

class ConcreteIterator extends Iterator{
    private ConcreteAggregate aggregate;
    private int current=0;
    public ConcreteIterator(ConcreteAggregate aggregate){
        this.aggregate=aggregate;
    }
    public Object First(){
        return aggregate[0];
    }
    public Object Next(){
        Object ret=null;
        current++;
        if(current<aggregate.Count){
            ret=aggregate[current];
        }
        return ret;
    }
    public boolean IsDone(){
        return current>=aggregate.Count?true:false;
    }
    public Object CurrentItem(){
        return aggregate[current];
    }
}

ConcreteAggregate具体聚集类,继承Aggregate:

class ConcreteAggregate extends Aggregate{
    private List<Object> items=new ArrayList<Object>();
    public Iterator CreateIterator(){
        return new ConcreteIterator(this);
    }
    public int Count(){
        return items.size();
    }
    public Object this[int index]{
        get{return items[index];}
        set{items.Insert(index,value);}
    }
}

迭代器模式就是分离了集合对象的遍历行为,抽象出一个迭代器来负责,这样既可以做到不暴露集合的内部结构,又可以让外部代码透明地访问集合内部的数据。