设计模式——迭代器模式
一、概念:迭代器模式(Iterator),提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示。
二、UML示意图:
Aggregate类是聚集抽象类,并且提供了创建可以遍历这个聚集类中所持有对象的迭代器(Iterator)。Iterator迭代器抽象类定义了遍历这个聚集类中集合对象的接口,ConcreteIterator具体迭代器可以通过不同的实现提供不同的遍历这个集合对象的方式。ConcreteAggregate具体聚集类可以继承抽象聚集类,提供不同的实现以提供不同的具体迭代器,或使用不同的集合结构。
三、优缺点
优点:
- 为客户端提供了遍历集合对象的方法,而客户端不需要知道集合对象的内部结构。松耦合。
- 迭代器模式为遍历不同的集合结构提供了一个统一的接口,从而支持同样的算法在不同的集合结构上进行操作。
- 增加新的聚合类和迭代器类都不需要修改原代码,符合开闭原则。
缺点:
- 由于迭代器模式将存储数据和遍历数据的职责分离,增加新的聚合类需要对应增加新的迭代器类,类的个数成对增加,这在一定程度上增加了系统的复杂性。