行为型模式 - 迭代器模式 (Iterator Pattern)
行为型模式 - 迭代器模式 (Iterator Pattern)
迭代器模式提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。
import java.util.ArrayList;
import java.util.List;
// 迭代器接口
interface Iterator<T> {
boolean hasNext();
T next();
}
// 集合接口
interface Aggregate<T> {
Iterator<T> createIterator();
}
// 自定义集合类
class CustomList<T> implements Aggregate<T> {
private List<T> items = new ArrayList<>();
public void add(T item) {
items.add(item);
}
@Override
public Iterator<T> createIterator() {
return new CustomListIterator<>(items);
}
}
// 自定义迭代器类
class CustomListIterator<T> implements Iterator<T> {
private List<T> items;
private int position = 0;
public CustomListIterator(List<T> items) {
this.items = items;
}
@Override
public boolean hasNext() {
return position < items.size();
}
@Override
public T next() {
if (hasNext()) {
return items.get(position++);
}
return null;
}
}
// 客户端代码
public class CustomListExample {
public static void main(String[] args) {
CustomList<String> list = new CustomList<>();
list.add("苹果");
list.add("香蕉");
list.add("橙子");
Iterator<String> iterator = list.createIterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
}
}
在JDK源码中, 例如 ArrayList 的 Iterator
List: 抽象聚合类
ArrayList: 具体聚合类
Iterator: 抽象迭代器
list.iterator(): 返回的是实现了 Iterator 接口的具体迭代器