public abstract class Iterator {
public abstract Object first();
public abstract Object next();
public abstract boolean isDone();
public abstract Object currentItem();
}
public class ConcreteIterator extends Iterator{
private ConcreteAggregate aggregate;
private int current = 0;
public ConcreteIterator(ConcreteAggregate aggregate) {
this.aggregate = aggregate;
}
@Override
public Object first() {
return aggregate.get(0);
}
@Override
public Object next() {
Object result = null;
current++;
if(current<aggregate.count()) {
result = aggregate.get(current);
}
return result;
}
@Override
public boolean isDone() {
return (current+1)>aggregate.count()?true:false;
}
@Override
public Object currentItem() {
return aggregate.get(current);
}
}
public abstract class Aggregate {
public abstract Iterator createIterator();
}
public class ConcreteAggregate extends Aggregate{
private List<Object> items = new ArrayList<Object>(16);
@Override
public Iterator createIterator() {
return new ConcreteIterator(this);
}
public int count() {
return items.size();
}
public Object get(int index) {
return items.get(index);
}
public void set(int index,Object value) {
items.add(index, value);
}
}
public class DemoEnter {
public static void main(String[] args) {
ConcreteAggregate a = new ConcreteAggregate();
a.set(0, "张三");
a.set(1, "李四");
a.set(2, "王五");
a.set(3, "马六");
a.set(4, "麻七");
a.set(5, "赵八");
Iterator i = new ConcreteIterator(a);
while(!i.isDone()) {
System.out.println(i.currentItem()+ " ,请 xxx");
i.next();
}
}
}