public class Program {
public static void main(String[] args) {
ConCreteAggregate a = new ConCreteAggregate();
a.setObjecet(0, "大鳥");
a.setObjecet(1, "小菜");
a.setObjecet(2, "行李");
a.setObjecet(3, "老外");
a.setObjecet(4, "公交內部員工");
a.setObjecet(5, "小偷");
Iterator i = new ConcreteIterator(a);
Object item = i.first();
while (!i.isDone()) {
System.out.println(i.currentItem() + "請買車票!");
i.next();
}
}
}
abstract class Iterator {
abstract Object first();
abstract Object next();
abstract boolean isDone();
abstract Object currentItem();
}
abstract class Aggregate {
abstract Iterator createIterator();
}
class ConCreteAggregate extends Aggregate {
private List<Object> items = new ArrayList<Object>();
@Override
Iterator createIterator() {
return new ConcreteIterator(this);
}
public int getCount() {
return items.size();
}
public Object getObject(int index) {
return items.get(index);
}
public void setObjecet(int index, Object object) {
items.add(index, object);
}
}
class ConcreteIterator extends Iterator {
private ConCreteAggregate aggregate;
private int current = 0;
public ConcreteIterator(ConCreteAggregate aggregate) {
this.aggregate = aggregate;
}
@Override
Object first() {
return aggregate.getObject(0);
}
@Override
Object next() {
Object ret = null;
current++;
if (current < aggregate.getCount()) {
ret = aggregate.getObject(current);
}
return ret;
}
@Override
boolean isDone() {
return current >= aggregate.getCount();
}
@Override
Object currentItem() {
return aggregate.getObject(current);
}
}
小菜成長記(十一)——迭代器模式
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.