迭代器模式(Iterator Pattern)又称为游标(Cursor)模式,来源于对容器的访问。
提供一种方法顺序访问一个容器对象中的各个元素,而不需要暴露该对象的内部表示。
遍历一个容器对象时。
Iterator.java
public interface Iterator<T> {
/**
* 是否还有下一个元素
* @return true - 有 false - 无
*/
boolean hasNext();
/**
* 将游标移动到下一个位置
* @return 下一个位置的元素
*/
T next();
}
ConcreateIterator.java
public class ConcreateIterator<T> implements Iterator<T> {
private List<T> list = new ArrayList<>();
private int cursor = 0;
public ConcreateIterator(List<T> list) {
this.list = list;
}
@Override
public boolean hasNext() {
return cursor != list.size();
}
@Override
public T next() {
T obj = null;
if (hasNext()) {
obj = this.list.get(cursor++);
}
return obj;
}
}
Aggregate.java
public interface Aggregate<T> {
void add(T obj);
void remove(T obj);
/**
* 获取容器的迭代器
* @return
*/
Iterator<T> iterator();
}
ConcreateAggregate.java
public class ConcreateAggregate<T> implements Aggregate<T> {
private List<T> list = new ArrayList<>();
@Override
public void add(T obj) {
list.add(obj);
}
@Override
public void remove(T obj) {
list.remove(obj);
}
@Override
public Iterator<T> iterator() {
return new ConcreateIterator<T>(list);
}
}
待续