java迭代器模式

来源:互联网 发布:java ftp 文件排序 编辑:程序博客网 时间:2024/06/05 08:33

模式定义

提供一种方法访问一个容器对象中各个元素,而又不暴露该对象的内部细节。

UML类图



例:



interface Iterator{    Object First();    Object Next();    boolean IsDone();    Object CurrentItem();}abstract class Aggregate{    abstract Iterator CreateIterator();}class ConcreteIterator implements Iterator{    private List<Object> list = new ArrayList<Object>();    private int curr=0;    public ConcreteIterator(List<Object> list){        this.list = list;    }    public Object First(){        return list.get(0);    }    public Object Next(){        Object ret = null;        curr++;        if(curr < list.size()){            ret = list.get(curr);        }        return ret;    }    public boolean IsDone(){        return curr>=list.size()?true:false;    }    public Object CurrentItem(){        return list.get(curr);    }}class ConcreteAggregate extends Aggregate{    private List<Object> list = new ArrayList<Object>();    public ConcreteAggregate(List<Object> list){        this.list = list;    }    public Iterator CreateIterator(){        return new ConcreteIterator(list);    }}class client{    public static void main(String[] args){    List<Object> list = new ArrayList<Object>();    list.add("miner");    list.add("any");    Aggregate agg = new ConcreteAggregate(list);    Iterator iterator = agg.CreateIterator();    iterator.First();    while(!iterator.IsDone()){        System.out.println(iterator.CurrentItem());        iterator.Next();        }    }}

模式总结

      1、迭代器模式提供一种方法来访问聚合对象,而不用暴露这个对象的内部表示。

      2、将遍历聚合对象中数据的行为提取出来,封装到一个迭代器中,通过专门的迭代器来遍历聚合对象的内部数据,这就是迭代器模式的本质。迭代器模式是“单一职责原则”的完美体现。

      3、当使用迭代器的时候,我们依赖聚合提供遍历。

      4、迭代器提供了一个通用的接口,让我们遍历聚合的项,放我们编码使用聚合项时,就可以使用多态机制。


0 0
原创粉丝点击