某软件公司欲基于迭代器模式开发一套用于遍历数组元素的类库,其基本结构如下图 所示: 在图 中, Collection 类是抽象聚合类, ConcreteCollection 类是具体聚合类, Iterator 类是抽象迭代器类, ConcreteIterator 类是具体迭代器类。在聚合类中提供了创建迭代器的工厂方法 createIterator() 和数组的 Setter 和 Getter 方法,在迭代器中提供了用于遍历数组元素的相关方法,如 first() 、 last() 、 next() 等。 【 Java 代码】 interface Collection { public void setArray(Object objs[]); // 设置数组 public Object[] getArray(); // 获取数组 public Iterator createIterator(); // 创建迭代器 } interface Iterator { public void first(); // 索引指向第一个元素 public void last(); // 索引指向最后一个元素 public void next(); // 索引指向下一个元素 public void previous(); // 索引指向上一个元素 public boolean isLast(); // 判断是否最后一个元素 public boolean isFirst(); // 判断是否第一个元素 public Object getItem(); // 获取当前索引所指向的元素 } class ConcreteCollection implements Collection { private Object[] objs; public void setArray(Object objs[]) { this.objs = objs; } public Object[] getArray() { return this.objs; } public Iterator createIterator() { return (1) ; } new ConcreteIterator(this); } class ConcreteIterator implements Iterator { private Object[] objs; private int index=0; // 索引变量,初值为 0 public ConcreteIterator(ConcreteCollection collection) { this.objs = (2) ; }collection.getArray() public void first() { index = 0; } public void last() { (3) ; }index = objs.length-1; public void next() { if(index
=0) { (5) index-- ; } } public boolean isLast() { (6) return index == objs.length - 1 ; } public boolean isFirst() { (7) return index == 0 ; } public Object getItem() { return objs[index]; } } class Test { public static void main(String args[]) { Collection collection; collection = new ConcreteCollection(); Object[] objs={" 北京 "," 上海 "," 广州 "," 深圳 "," 长沙 "}; collection.setArray(objs); Iterator i = (8) new ConcreteIterator(collection) ; i.last(); // 逆向遍历所有元素 while( (9) isFirst() ) { System.out.println(i.getItem().toString()); (10) i.previous() ; } } }