一、概述
迭代器模式是一种行为设计模式,它提供了一种顺序访问聚合对象中各个元素的方法,而不暴露聚合对象的内部表示。通过迭代器模式,我们可以遍历聚合对象的元素,而无需关注聚合对象的具体结构。
二、代码
下面是一个示例代码,展示了迭代器模式的实现:
//1.抽象迭代器接口
public interface Iterator {
//是否有下一个节点
boolean hasNext();
//获取下一个节点
Object next();
}
//2.具体迭代器类
public class ConcreteIterator implements Iterator {
private String[] items;
//迭代器位置
private int position = 0;
public ConcreteIterator(String[] items) {
this.items = items;
}
public boolean hasNext() {
return position < items.length;
}
public Object next() {
String item = items[position];
position++;
return item;
}
}
//3.聚合对象类
public class Aggregate {
private String[] items;
public Aggregate(String[] items) {
this.items = items;
}
public Iterator createIterator() {
return new ConcreteIterator(items);
}
}
//4.测试类
public class Test {
public static void main(String[] args) {
String[] items = {"Item 1", "Item 2", "Item 3", "Item 4", "Item 5"};
Aggregate aggregate = new Aggregate(items);
Iterator iterator = aggregate.createIterator();
//迭代输出
while (iterator.hasNext()) {
Object item = iterator.next();
System.out.println(item);
}
}
}
在上述代码中,我们定义了抽象迭代器接口 Iterator
,其中包含了 hasNext()
方法用于检查是否还有下一个元素,以及 next()
方法用于获取下一个元素。
具体迭代器类 ConcreteIterator
实现了 Iterator
接口,通过一个数组来存储聚合对象的元素,同时实现了迭代器的方法。
聚合对象类 Aggregate
包含了一个数组作为内部数据,通过 createIterator()
方法创建并返回一个具体迭代器对象。
在测试代码中,我们创建了一个聚合对象,并通过 createIterator()
方法获取对应的迭代器。然后,通过迭代器的 hasNext()
和 next()
方法遍历聚合对象的元素,并将其打印出来。