定义:又叫游标(Cursor)模式,是对象的行为模式。提供了一种顺序访问聚合对象中的元素但是又不暴露它的底层实现的方式。
适用场景:
1、访问一个聚合对象的内容而无须暴露它的内部表示。
2、需要为聚合对象提供多种遍历方式。
3、为遍历不同的聚合结构提供一个统一的接口。
优点:
1、它支持以不同的方式遍历一个聚合对象。
2、迭代器简化了聚合类。
3、在同一个聚合上可以有多个遍历。
4、在迭代器模式中,增加新的聚合类和迭代器类都很方便,无须修改原有代码。
缺点:
由于迭代器模式将存储数据和遍历数据的职责分离,增加新的聚合类需要对应增加新的迭代器类,类的个数成对增加,这在一定程度上增加了系统的复杂性。
生活场景中的应用:
1、旅游:国家与景点之间是集合与元素的关系,导游是国家提供的服务,而我们只和导游交互而不直接与国家交互,这种关系和迭代器模式各个角色之间的关系非常相似。
2、刷题库
源码应用:
1)PropertyTokenizer 用于MyBatis 的MetaObject 反射工具包下,用来解析对象关系的迭代操作。这个类在MyBatis 中使用得非常频繁,包括解析数据源配置信息并填充到数据源类上,同时参数的解析、对象的设置都会使用这个类。
2)JDK自带的Iterator 遍历集合