设计模式 – 迭代器模式(Iterator Pattern)

内容纲要

迭代器模式(Iterator Pattern)是一种行为设计模式,用于提供一种顺序访问集合元素的方法,而不暴露集合内部的表示。这种模式可以帮助你在不暴露集合内部结构的情况下遍历各种数据结构。

Java 示例代码:

首先,我们创建一个迭代器接口:

public interface Iterator<T> {
    boolean hasNext();

    T next();
}

然后,我们创建一个聚合接口,包含创建迭代器的方法:

public interface Aggregate<T> {
    Iterator<T> createIterator();
}

接下来,我们创建一个具体的聚合类,实现 Aggregate 接口:

import java.util.ArrayList;
import java.util.List;

public class ConcreteAggregate<T> implements Aggregate<T> {
    private List<T> items = new ArrayList<>();

    public void addItem(T item) {
        items.add(item);
    }

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

    private class ConcreteIterator implements Iterator<T> {
        private int currentIndex = 0;

        @Override
        public boolean hasNext() {
            return currentIndex < items.size();
        }

        @Override
        public T next() {
            if (hasNext()) {
                return items.get(currentIndex++);
            }
            return null;
        }
    }
}

现在我们可以在客户端代码中使用这些类:

public class Client {
    public static void main(String[] args) {
        // 创建聚合对象
        ConcreteAggregate<String> aggregate = new ConcreteAggregate<>();

        // 添加元素
        aggregate.addItem("Item1");
        aggregate.addItem("Item2");
        aggregate.addItem("Item3");

        // 使用迭代器遍历元素
        Iterator<String> iterator = aggregate.createIterator();
        while (iterator.hasNext()) {
            System.out.println(iterator.next());
        }
    }
}

输出:

Item1
Item2
Item3

通过这个示例,你可以看到迭代子模式如何提供一种顺序访问集合元素的方法,而不暴露集合内部的表示。这使得你可以在不关心集合内部结构的情况下编写遍历集合的代码,从而提高代码的可扩展性和可维护性。

Leave a Comment

您的电子邮箱地址不会被公开。 必填项已用*标注

close
arrow_upward