设计模式 | 迭代器模式

97 阅读1分钟

定义

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

使用场景

遍历一个容器对象。

Java 代码示例

// 容器
public interface Aggregate<T> {
    void add(T t);

    void remove(T t);

    Iterator<T> iterator();
}

// 具体迭代器
public class ConcreteIterator<T> implements Iterator<T> {
    private List<T> mList = new ArrayList<>();
    private int cursor = 0;

    public ConcreteIterator(List<T> list) {
        mList = list;
    }

    @Override
    public boolean hasNext() {
        return cursor < mList.size();
    }

    @Override
    public T next() {
        if (hasNext()) {
            return mList.get(cursor++);
        } else {
            return null;
        }
    }
}

// 具体容器
public class ConcreteAggregate<T> implements Aggregate<T> {
    private List<T> mList = new ArrayList<>();

    @Override
    public void add(T t) {
        mList.add(t);
    }

    @Override
    public void remove(T t) {
        mList.remove(t);
    }

    @Override
    public Iterator<T> iterator() {
        return new ConcreteIterator<>(mList);
    }
}