标签:str ret 设计模式 alt 出版 interface code override ima
迭代器模式(Iterator Pattern)是最常被使用的几个模式之一,被广泛地应用到Java的API中。
定义:提供一种方法访问一个容器对象中各个元素,而又不需暴露该对象的内部细节。
类图如下所示。
迭代器模式有以下4个角色。
Iterator.java
public interface Iterator { public Object next(); public boolean hasNext(); }
ConcreteIterator.java
public class ConcreteIterator implements Iterator { private ConcreteAggregate agg; private int index = 0; private int size = 0; public ConcreteIterator(ConcreteAggregate agg) { this.agg = agg; size = agg.size(); index = 0; } @Override public Object next() { if (index < size) { return agg.getElement(index++); } else { return null; } } @Override public boolean hasNext() { return index < size; } }
Aggregate.java
public interface Aggregate { public void add(Object obj); public Iterator createIterator(); }
ConcreteAggregate.java
public class ConcreteAggregate implements Aggregate { private Vector vector = new Vector(); @Override public void add(Object obj) { this.vector.add(obj); } public Object getElement(int index) { if (index < this.vector.size()) { return vector.get(index); } else { return null; } } public int size() { return vector.size(); } @Override public Iterator createIterator() { return new ConcreteIterator(this); } }
Client.java
public class Client { public static void main(String[] args) { // 定义聚集对象 Aggregate agg = new ConcreteAggregate(); agg.add("张三"); agg.add("李四"); agg.add("王五"); // 遍历 Iterator iterator = agg.createIterator(); while (iterator.hasNext()) { System.out.println(iterator.next()); } } }
运行结果如下所示。
张三 李四 王五
优点:
缺点:
应用场景:
摘自:
青岛东合信息技术有限公司 . 设计模式(Java版) . 电子工业出版社,2012,133-138.
标签:str ret 设计模式 alt 出版 interface code override ima
原文地址:https://www.cnblogs.com/yewen1234/p/10030726.html