模式的定义与特点
迭代器(Iterator)模式的定义:提供一个对象来顺序访问聚合对象中的一系列数据,而不暴露聚合对象的内部表示。迭代器模式是一种对象行为型模式,其主要优点如下。
- 访问一个聚合对象的内容而无须暴露它的内部表示。
- 遍历任务交由迭代器完成,这简化了聚合类。
- 它支持以不同方式遍历一个聚合,甚至可以自定义迭代器的子类以支持新的遍历。
- 增加新的聚合类和迭代器类都很方便,无须修改原有代码。
- 封装性良好,为遍历不同的聚合结构提供一个统一的接口。
其主要缺点是:增加了类的个数,这在一定程度上增加了系统的复杂性。
原文链接
public class IteratorTest { } //抽象聚合 interface Aggregate { public void add(Object obj); public void remove(Object obj); public IteratorM getIteratorM(); } //具体聚合 class ConcreateAggregate implements Aggregate { private List list=new ArrayList(); @Override public void add(Object obj) { list.add(obj); } @Override public void remove(Object obj) { list.remove(obj); } @Override public IteratorM getIteratorM() { return new ConcreateIteratorM(list); } } interface IteratorM { Object first(); Object next(); boolean hasNext(); } class ConcreateIteratorM implements IteratorM { private List list=null; private int index=-1; public ConcreateIteratorM(List list) { this.list = list; } @Override public Object first() { index = 0; return list.get(index); } @Override public Object next() { if(this.hasNext()) { return list.get(++index); } return null; } @Override public boolean hasNext() { if(index<list.size()-1) { return true; } return false; } }