迭代器模式
# 概念
它提供一种方法 ** 访问一个容器对象中各个元素,** 而又不需暴露该对象的内部细节。
# 结构
Iterator 抽象迭代器:抽象迭代器负责定义访问和遍历元素的接口,而且基本上是有固定的 3 个方法:first () 获得第一个元素,next () 访问下一个元素,isDone () 是否已经访问到底部(Java 叫做 hasNext () 方法)。
ConcreteIterator 具体迭代器:具体迭代器角色要实现迭代器接口,完成容器元素的遍历。
Aggregate 抽象容器:容器角色负责提供创建具体迭代器角色的接口,提供一个类似 createIterator () 这样的方法,在 Java 中一般是 iterator () 方法。
Concrete Aggregate 具体容器:具体容器实现容器接口定义的方法,创建出容纳迭代器的对象。
# 代码示例
/**
* 具体迭代器
*/
public class ConcreteIterator<T> implements Iterator<T> {
private List<T> list = new ArrayList<>();
private int cursor = 0;
public boolean hasNext() {
return cursor != list.size();
}
public T next() {
T obj = null;
if (this.hasNext()) {
obj = this.list.get(cursor++);
}
return obj;
}
}
上次更新: 2022/12/31, 03:04:26