您的位置:首页 > 编程语言 > Java开发

Java设计模式-----Iterator迭代器模式

2008-06-06 12:08 756 查看
源自:http://www.blogjava.net/flustar/archive/2007/12/04/iterator.html

Iterator迭代器模式:

提供一个方法顺序访问一个聚合对象的各个元素,而又不暴露该对象的内部表示。

例子:

interface Iterator {

public void first();
public void next();
public E currentItem();
public boolean isDone();
}

public abstract class Aggregate{
protected abstract Iterator createIterator();
}

public class ConcreteAggregate extends Aggregate {

private ArrayList arrayList = new ArrayList();

public Iterator createIterator() {
return new ConcreteIterator(this);
}

public void add(E o) {
arrayList.add(o);
}

public E getElement(int index) {
if (index < arrayList.size()) {
return arrayList.get(index);
} else {
return null;
}
}

public int size() {
return arrayList.size();
}
}

public class ConcreteIterator implements Iterator {

private ConcreteAggregate agg;
private int index = 0;
private int size = 0;

public ConcreteIterator(ConcreteAggregate aggregate) {
this.agg = aggregate;
this.index = 0;
this.size = aggregate.size();
}

public E currentItem() {
return agg.getElement(index);
}

public void first() {
index = 0;
}

public boolean isDone() {
if (index >= size) {
return true;
}
return false;
}

public void next() {
if (index < size) {
index++;
}

}
}

public class Client {

public static void main(String[] args) {

ConcreteAggregate aggregate = new ConcreteAggregate();
aggregate.add("A");
aggregate.add("B");
aggregate.add("C");
aggregate.add("D");
aggregate.add("E");
Iterator iterator = aggregate.createIterator();
for (iterator.first(); !iterator.isDone(); iterator.next()) {
System.out.println(iterator.currentItem());
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: