适用场景
用于遍历容器,隐藏访问细节,为所有的容器提供统一的遍历接口。
类图
实例代码
我写了一个int的容器用来简单说明一下
Aggregate:
public interface Aggregate {
Iterator iterator();
int get(int index);
}
ConcreteAggregate:
public class ConcreteAggregate implements Aggregate{
int[] nums;
public ConcreteAggregate() {
nums=new int[10];
for(int i=0;i<10;i++)
nums[i]=i*i;
}
public int get(int index){
return nums[index];
}
@Override
public Iterator iterator() {
return new ConcreteIterator(this);
}
}
Iterator:
public interface Iterator {
boolean hasNext();
Object next();
}
ConcreteIterator
public class ConcreteIterator implements Iterator{
Aggregate aggregate;
int currIndex;
public ConcreteIterator(Aggregate aggregate) {
this.aggregate = aggregate;
currIndex=0;
}
@Override
public boolean hasNext() {
return (currIndex<10)?true:false;
}
@Override
public Object next() {
return aggregate.get(currIndex++);
}
}
Client:
public class Client {
public static void main(String[] args){
Aggregate aggregate=new ConcreteAggregate();
Iterator it=aggregate.iterator();
while(it.hasNext())
System.out.print(it.next()+"\t");
}
}