Design patterns 迭代器模式

示例

集合是软件工程中最常用的数据结构之一。集合只是一组对象。集合可以是列表,数组,映射,树或其他任何东西。因此,集合应提供某种方式来访问其元素而不暴露其内部结构。无论集合类型如何,我们都应该能够遍历它。

迭代器模式的想法是承担访问集合对象并将其放入迭代器对象的责任。返回的迭代器对象将保持迭代顺序,跟踪当前项目,并且必须具有一种获取下一个元素的方法。

通常,集合类包含两个组件:类本身,它是Iterator。

public interface Iterator {
   public boolean hasNext();
   public Object next();
}

public class FruitsList {
    public String fruits[] = {"Banana", "Apple", "Pear", "Peach", "Blueberry"};

    public Iterator getIterator() {
       return new FruitIterator();
    }

    private class FruitIterator implements Iterator {
       int index;

       @Override
       public boolean hasNext() {
           return index < fruits.length;
       }

       @Override
       public Object next() {
   
          if(this.hasNext()) {
            return names[index++];
          }
          return null;
       }        
    }
}