1. 定义
提供一种方法顺序访问一个容器对象中的各个元素,而又不需要暴露该对象的内部表示, 又称游标(Cursor)模式
2. 使用场景
访问一个聚合对象的内容而无须暴露它的内部表示
需要为聚合对象提供多种遍历方式
为遍历不同的聚合结构提供一个统一的接口
3. 优缺点
优点:
它支持以不同的方式遍历一个聚合对象
迭代器简化了聚合类
在同一个聚合上可以有多个遍历
在迭代器模式中,增加新的聚合类和迭代器类都很方便,无须修改原有代码
缺点: 由于迭代器模式将存储数据和遍历数据的职责分离,增加新的聚合类需要对应增加新的迭代器类,类的个数成对增加,这在一定程度上增加了系统的复杂性
4. Android源码中的使用
迭代器模式还是很常见的,我们平时使用的List,Map等集合类所包含的迭代器,数据库查询使用的Cursor都是属于迭代器模式的应用
5. 实例演示
以统计员工数据为例
1. 首先创建一个员工类
2. 创建一个迭代器接口
3. 创建两个公司类,都持有员工的集合,但是内部实现是不同的,一个是数组,一个是List集合,都实现了上面的迭代器接口
4. 创建一个老板类,它需要去遍历访问员工数据,里面有三个方法,分别是对数组遍历,对List遍历,以及使用迭代器遍历
5. 创建实例进行遍历, 从这里就可以看出迭代器模式(read3)的好处了, 1. 实现了解耦,boss类不再持有员工的引用;2. 方便扩展,若又有个company3,4,5,6...都是不同的数据结构实现的,若是普通方法去遍历那么还要修改boss类的代码,而如果用迭代器模式实现则只需要新增的company类实现迭代器接口就好了
我是今阳,如果想要进阶和了解更多的干货,欢迎关注公众号”今阳说“接收我的最新文章
网友评论