定义:
它提供一种方法访问一个容器对象中的各个元素,而又不需要暴露该对象的内部细节。
迭代器是为容器服务的,迭代器模式为了解决遍历容器中的元素而诞生的,从而使容器只管增减元素就可以了,需要遍历时,交给迭代器处理。
其通用类图如下:
实现代码如下:
public interface Iterator {
public Object next();
public boolean hasNext();
public boolean remove();
}
public class ConcreteIterator implements Iterator {
private Vector vector=new Vector();
int cursor=0;//当前游标
public ConcreteIterator(Vector vector) {
this.vector = vector;
}
//返回下一个元素
@Override
public Object next() {
Object obj=null;
if(this.hasNext()){
obj=this.vector.get(cursor++);
}
return obj;
}
//判断是否还有元素
@Override
public boolean hasNext() {
if(this.cursor==vector.size())
return false;
else
return true;
}
//删除元素
@Override
public boolean remove() {
this.vector.remove(this.cursor);
return true;
}
}
public interface Aggregate {
public void add(Object object);
public void remove(Object object);
public Iterator iterator();
}
public class ConcreteAggregate implements Aggregate {
private Vector vector=new Vector();
@Override
public void add(Object object) {
this.vector.add(object);
}
@Override
public void remove(Object object) {
this.vector.remove(object);
}
//返回针对该容器的迭代器
@Override
public Iterator iterator() {
return new ConcreteIterator(this.vector);
}
}
public class Client {
public static void main(String[] args) {
Aggregate agg=new ConcreteAggregate();
agg.add("suo");
agg.add("piao");
agg.add("datou");
Iterator iterator=agg.iterator();
while(iterator.hasNext()){
System.out.println(iterator.next());
}
}
}