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

来源:互联网 发布:腾飞软件工作室 骗局 编辑:程序博客网 时间:2024/05/23 19:19

源自: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());}}}
原创粉丝点击