行为型--迭代器模式

来源:互联网 发布:芒果tv2016旧版 mac 编辑:程序博客网 时间:2024/05/21 06:23

迭代器模式也是一个我们在写程序时经常用到的,特别是在java中已经封装好了,我们可以通过集合对象实例来调用。

模式意图

提供一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴漏该对象内部表示。

模式适用性

在设计程序时,我们希望无论何种集合,应当允许程序以一种统一的方式遍历集合中的对象,而不需要知道这些对象在集合中是如何表示及存储的。

模式参与者

  1. 集合(Aggregate):一个接口,规定了具体集合需实现的操作。
  2. 具体集合(ConcreteAggregate):具体集合是实现集合接口的类的实例,具体集合按着一定的结构存储对象。
  3. 迭代器(Iterator):一个接口,规定了遍历具体集合的方法。
  4. 具体迭代器(Concrete Iterator):实现迭代器接口的类的实例。

在java中collection提供的List、Set等的集合实现了迭代器接口,它们就是一个应用迭代器模式的很好地例子。
迭代器(Iterator):Iterator.java

public interface Iterator {    public Object first();    public Object next();    public Object currentItem();    public boolean isDone();}

具体迭代器(ConcreteIterator):ConcreteIterator.java

public class ConcreteIterator implements Iterator{    private int currentIndex = 0;    private Vector vector = null;    public ConcreteIterator(final Vector vector)    {        this.vector = vector;    }    @Override    public Object first()    {        currentIndex = 0;        return vector.get(currentIndex);    }    @Override    public Object next()    {        currentIndex++;        return vector.get(currentIndex);    }   @Override    public Object currentItem()    {        return vector.get(currentIndex);    }    @Override    public boolean isDone()    {        if (currentIndex >= this.vector.size() - 1)        {            return true;        }        else        {            return false;        }    }}

优点

  1. 用户使用迭代器访问集合中的对象,而不需要知道这些对象在集合中是如何表示及存储的。
  2. 用户可以同时使用多个迭代器遍历一个集合。
0 0
原创粉丝点击