10.24

liuxuechao發表於2024-11-20

迭代器模式

下面是一個簡單的示例,展示瞭如何在 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() 方法獲取對應的迭代器。然後,我們使用迭代器進行遍歷,並輸出每個元素。

透過迭代器模式,我們可以透過統一的介面來遍歷不同型別的集合物件,而不需要關心其內部的具體實現。這種方式使得客戶端程式碼與具體集合類解耦,提供了一種通用的遍歷機制。