10.24

迭代器模式

下面是一个简单的示例,展示了如何在 Java 中实现迭代器模式:

// 迭代器接口
interface Iterator {
    boolean hasNext();
    Object next();
}

// 集合接口
interface Collection {
    Iterator createIterator();
}

// 具体迭代器
class ConcreteIterator implements Iterator {
    private String[] elements;
    private int position = 0;

    public ConcreteIterator(String[] elements) {
        this.elements = elements;
    }

    public boolean hasNext() {
        return position < elements.length;
    }

    public Object next() {
        if (hasNext()) {
            String element = elements[position];
            position++;
            return element;
        }
        return null;
    }
}

// 具体集合
class ConcreteCollection implements Collection {
    private String[] elements;

    public ConcreteCollection(String[] elements) {
        this.elements = elements;
    }

    public Iterator createIterator() {
        return new ConcreteIterator(elements);
    }
}

// 客户端代码
public class IteratorPatternExample {
    public static void main(String[] args) {
        String[] elements = {"A", "B", "C", "D", "E"};

        Collection collection = new ConcreteCollection(elements);
        Iterator iterator = collection.createIterator();

        while (iterator.hasNext()) {
            Object element = iterator.next();
            System.out.println(element);
        }
    }
}

在上述示例中,我们首先定义了一个迭代器接口 Iterator,它包含了 hasNext() 和 next() 方法用于遍历元素。然后,我们定义了一个集合接口 Collection,其中包含了 createIterator() 方法用于创建迭代器。

接下来,我们实现了具体的迭代器 ConcreteIterator,它接受一个数组作为参数,并在遍历过程中依次返回数组中的元素。然后,我们实现了具体的集合 ConcreteCollection,它接受一个数组作为参数,并通过 createIterator() 方法返回一个对应的迭代器。

最后,在客户端代码中,我们创建了一个具体的集合对象 ConcreteCollection,并通过 createIterator() 方法获取对应的迭代器。然后,我们使用迭代器进行遍历,并输出每个元素。

通过迭代器模式,我们可以通过统一的接口来遍历不同类型的集合对象,而不需要关心其内部的具体实现。这种方式使得客户端代码与具体集合类解耦,提供了一种通用的遍历机制。

posted @ 2024-11-20 10:18  liuxuechao  阅读(1)  评论(0编辑  收藏  举报