迭代器模式定义
提供一种方式来访问聚合对象,而不用暴漏这个对象内部表示,其别名为游标,迭代器模式是一种对象行为模式。
迭代器模式结构图:
java内置迭代器的使用
java内置提供了Iterable<E> 泛型接口,来实现聚合对象的迭代。
迭代器模式主要优缺点
优点
1.支持以不同的方式便利一个聚合对象,在同一个聚合对象上可以定义多种遍历方式。在迭代器模式中需要用一个不同的迭代器来替换原有迭代器即可变化遍历算法,也可以自己定义迭代器的子类以支持新的遍历方式。
2.迭代器简化了聚合类。由于引入了迭代器,在原有聚合对象中不需要在自行提供数据便利等方法,这样可以简化聚合类的设计。
3.迭代器模式中,由于引入了抽象层,增加新的聚合类和迭代器类都很方便,无须修改原有代码,满足开闭原则的要求。
缺点
1.由于迭代器模式将储存数据和遍历数据的职责分离。增加新的聚合类需要对应增加新的迭代器类。类的个数成对增加。
2.抽象迭代器的设计难度较大,如果需要实现逆向便利,只能通过其子集类ListIterator来扩展,而ListIterator迭代器无法用于操作set类型的聚合对象,在自定义迭代器时,创建一个考虑全面的迭代器并不是很容易。
迭代器模式适用场景
1.访问一个聚合对象的内容而无须暴漏它的内部表示,将聚合对象的访问与内部数据的存储分离,使得访问聚合对象时,无须了解内部实现细节。
2.需要为一个聚合对象提供多种遍历方式。
3.为遍历不同的聚合解构提供一个统一的接口,在该接口的实现类中为不同的聚合解构提供不同的遍历方式,而客户端可以一致性地操作该接口。