1類圖
2定義
提供一種方法順序訪問一個聚合對象中的各種元素,而又不暴露該對象的內部表示。
3應用場景
遍歷一個容器對象時
4迭代器接口
public interface Iterator<E> {
boolean hasNext();
E next();
}
5具體迭代器類
public class ConcreteIterator<E> implements Iterator<E>{
List<E> list = new ArrayList<>();
private int cursor = 0;
public ConcreteIterator(List<E> list){
this.list = list;
}
@Override
public boolean hasNext() {
return cursor != list.size();
}
@Override
public E next() {
E obj = null;
if(this.hasNext()){
obj = this.list.get(cursor++);
}
return obj;
}
}
6容器接口
public interface Aggregate<E> {
void add(E obj);
void remove(E obj);
Iterator<E> itrerator();
}
7具體容器類
public class ConcreteAggregate<E> implements Aggregate<E> {
List<E> list = new ArrayList<>();
@Override
public void add(E obj) {
list.add(obj);
}
@Override
public void remove(E obj) {
list.remove(obj);
}
@Override
public Iterator<E> itrerator() {
return new ConcreteIterator<>(list);
}
}
8客戶類
public class Client {
public static void main(String[] args) {
Aggregate<String> a = new ConcreteAggregate<>();
a.add("a");
a.add("b");
a.add("c");
a.add("d");
a.add("e");
Iterator<String> iterator = a.itrerator();
while(iterator.hasNext()){
System.out.println(iterator.next());
}
}
}