设计模式之迭代器模式
设计模式之迭代器模式
迭代器模式为统一遍历提供了接口,通过返回的迭代器,可以遍历容器内部的节点。
在迭代器模式中有几种角色
集合类接口 Aggregate,迭代接口,具体的集合类对象,具体的迭代器
UML图如下

Aggregate接口如下:
package 二十三种设计模式.迭代器模式;
import java.util.Iterator;
/**
* @author lc
* @date 2020-12-18 19:00
*/
public interface Aggregate<E> {
/**
* 统一返回迭代器接口
*
* @return 迭代器
*/
Iterator<E> iterator();
}
ConcreteAggregate如下
public class ListT1<E> implements Aggregate<E> {
List<E> list = new ArrayList<>();
public ListT1(List<E> list) {
this.list = list;
}
@Override
public Iterator<E> iterator() {
return new ListIterator<>(list);
}
}
Iterator接口,由JDK提供
package java.util;
import java.util.function.Consumer;
public interface Iterator<E> {
boolean hasNext();
E next();
default void remove() {
throw new UnsupportedOperationException("remove");
}
default void forEachRemaining(Consumer<? super E> action) {
Objects.requireNonNull(action);
while (hasNext())
action.accept(next());
}
}
ConcreteIterator如下:
package 二十三种设计模式.迭代器模式;
import java.util.Iterator;
import java.util.List;
/**
* @author lc
*/
public class ListIterator<E> implements Iterator<E> {
private List<E> list;
private int size;
public ListIterator(List<E> list) {
this.list = list;
this.size = 0;
}
@Override
public boolean hasNext() {
return size < this.list.size();
}
@Override
public E next() {
return list.get(size++);
}
}
迭代器模式较为简单,其设计思想就是统一遍历,无论集合类内部如何变化,只要可以成功的返回迭代器就可以实现遍历
本文来自博客园,作者:小鸡小鸡快点跑,转载请注明原文链接:https://www.cnblogs.com/clion/p/14156737.html

浙公网安备 33010602011771号