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()
方法获取对应的迭代器。然后,我们使用迭代器进行遍历,并输出每个元素。
通过迭代器模式,我们可以通过统一的接口来遍历不同类型的集合对象,而不需要关心其内部的具体实现。这种方式使得客户端代码与具体集合类解耦,提供了一种通用的遍历机制。