迭代器模式
迭代器模式
/**
* 迭代器模式
* 提供一種方法訪問一個容器對象中各個元素,而又不暴露對象內部的細節(jié)。
*
* 迭代器模式涉及4個角色:
* 1.抽象迭代器角色 (定義訪問和遍歷元素的接口)
* 2.具體迭代器角色 (實現(xiàn)Iterator接口,完成元素遍歷)
* 3.抽象聚合(提供創(chuàng)建迭代器的接口)
* 4.具體聚合 (創(chuàng)建出容納迭代器的對象)
*/
public class IteratorPattern {
//抽象迭代器角色
interface Iterator{
Object next();
boolean hasNext();
}
//具體迭代器角色
class ConcreteIterator implements Iterator{
private ConcreteAggregate agg;
private int index;
private int size;
public ConcreteIterator(ConcreteAggregate agg) {
this.agg = agg;
this.index = 0;
this.size = agg.size();
}
@Override
public Object next() {
if(index < size)
return agg.getElement(index);
else
return null;
}
@Override
public boolean hasNext() {
return index < size;
}
}
//抽象聚合
interface Aggregate{
void add(Object obj);
Iterator createIterator();
}
//具體聚合
class ConcreteAggregate implements Aggregate{
private Vector vector = new Vector();
public void add(Object obj){
this.vector.add(obj);
}
public Object getElement(int index){
if(index < vector.size()){
return vector.get(index);
}else
return null;
}
public int size (){
return this.vector.size();
}
public Iterator createIterator(){
return new ConcreteIterator(this);
}
}
public void main(String[] args) {
Aggregate agg = new ConcreteAggregate();
agg.add("1");
agg.add("2");
agg.add("3");
//遍歷
Iterator iterator = agg.createIterator();
while(iterator.hasNext()){
System.out.println(iterator.next());
}
}
}