Android设计模式-13-迭代器模式

1. 定义

提供一种方法顺序访问一个容器对象中的各个元素,而又不需要暴露该对象的内部示, 又称游标(Cursor)模式

2. 使用场景

  1. 访问一个聚合对象数据分析的内容而无须暴露它的内部
  2. 需要为聚合对象提供多种遍历方式
  3. 为遍历不同的聚合结构提供一个统一的接口

3. 优缺点

  • 优点:
  1. 它支持以不同的方式遍历一个聚合对象
  2. 迭代器迭代器iterator简化了聚合类
  3. 在同一个聚合上可以有多个遍历
  4. 数据分析迭代器模式中,增加新的聚合类和迭代器类都很方便,无须修改原有代码
  • 缺点:
    由于迭代器模式将存储数据和遍历数据的职责分离,增迭代器遍历加新的聚合类需要对应增加新的迭代器类,类的个数成对增加,这在一定程度上增加了系统的复杂性

4. Android源码中的使用

迭代器模式还是很常见的,我们平时使用的List,Map等集合类所包含的迭代器,数据库查询使用的Cursor都是属于迭代器其他模式的应用

5. 实例演示

以统计员工数据为例

1. 首先创建一个员工类

2. 创建一个迭代器接口

3. 创建两个公司类,都持有员工的集合,但是内部实现是不同的,一个是数组,一个是List集合,都实现了上面的迭代器接口


                                            Android设计模式-13-迭代器模式

4. 创建一个老板类,它需要去遍历访问员工数据,里面有三个方法,分别是对数组遍历,对List遍历,以及使用迭代器遍历


                                            Android设计模式-13-迭代器模式

5. 创建实例进行遍历, 从这里就可以看出迭代器模式(read3)的好处了, 1. 实现了解耦,boss类不再持有员工的引用;2. 方便扩展,若又有个company3,4,5设计模式七大原则,6...都是不同的数据结构实现的,若是普通方法去遍历那么还要修改boss类的代码,而如果用迭代器模式实现则只需要新增的company类实现迭代器接口就好了


                                            Android设计模式-13-迭代器模式

我是今阳,如果想要进阶和了解更多的干货,欢迎关注公众号”今阳说“接设计模式23模式介绍收我的最新文章