定义(百度百科):
迭代器模式(Iterator Pattern)提供一种方法来访问聚合对象,而不用暴露这个对象的内部表示,其别名为游标(Cursor)。迭代器模式是一种对象行为型模式。
UML类图:
具体代码:
public abstract class Aggregate { abstract Iterator createIterator(); } public class ConcreteAggregate extends Aggregate { @Override Iterator createIterator() { return new ConcreteIterator(); } } public interface Iterator { public void first(); public void next(); public boolean hasNext(); public Object currentItem(); } public class ConcreteIterator implements Iterator { @Override public void first() { } @Override public void next() { } @Override public boolean hasNext() { return false; } @Override public Object currentItem() { return null; } } public class Client { public static void main(String[] args) { Aggregate aggregate = new ConcreteAggregate(); aggregate.createIterator().first(); } }
模块说明:
Iterator:它定义了访问和遍历元素的接口,声明了用于遍历数据元素的方法
ConcreteIterator:它实现了抽象迭代器接口,完成对聚合对象的遍历
Aggregate:它用于存储和管理元素对象,声明一个createIterator()方法用于创建一个迭代器对象,充当抽象迭代器工厂角色
ConcreteAggregate:它实现了在抽象聚合类中声明的createIterator()方法,该方法返回一个与该具体聚合类对应的具体迭代器ConcreteIterator实例
适用场景:
由于Java的类库都已经实现了迭代器模式,因此在实际开发中,
我们只需要直接使用已定义好的迭代器即可,迭代器已经成为我们操作聚合对象的基本工具之一
优缺点:
优点:
可以以不同的遍历方式遍历整个聚合
迭代器简化了聚合的接口
缺点:
抽象迭代器的设计难度较大,需要充分考虑到系统将来的扩展
总结:
控制访问聚合对象里的元素