迭代器模式
下面是一個簡單的示例,展示瞭如何在 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()
方法獲取對應的迭代器。然後,我們使用迭代器進行遍歷,並輸出每個元素。
透過迭代器模式,我們可以透過統一的介面來遍歷不同型別的集合物件,而不需要關心其內部的具體實現。這種方式使得客戶端程式碼與具體集合類解耦,提供了一種通用的遍歷機制。