迭代器模式(Iterator Pattern): 提供了一种方法来访问聚合对象,而不同用暴露这个对象的内部表示,起别名为游标(Cursor)。迭代器模式是一种对象行为型模式。
模式动机:
在迭代器模式中,提供了一个外部的迭代器来对聚合对象进项访问和遍历,迭代器定义了一个访问该聚合元素的接口,并且可以跟踪当前遍历的元素,了解哪些元素已经遍历过而那些没有。
模式结构:
- Iterator:抽象迭代器
- ConcreteIterator: 具体迭代器
- Agregate: 抽象聚合类
- ConcreteAggregate: 具体聚合类
模式分析:
在迭代器模式中应用了工厂方法模式,聚合类充当工厂类,而迭代器充当产品类,由于定义了抽象层,系统的扩充性很好,在客户端可以针对抽象聚合类和抽象迭代器进行编程。很多语言的类库都实现了迭代器。
具体实现类图:
迭代器模式的优缺点:
优点:
- 支持以不同的方式遍历一个聚合对象
- 迭代器简化了聚合类
- 在同一个聚合上可以有多个遍历
- 增加新的聚合类和迭代器类都很方便
缺点:
- 迭代器将存储数据和遍历数据的职责分离,增加新的聚合类要对应增加新的迭代器类,类的个数承兑增加