迭代器模式

设计模式-迭代器模式

我们两清 提交于 2020-03-17 08:10:32
某厂面试归来,发现自己落伍了!>>> 1. 迭代器模式概述 迭代器模式, 我觉得这个图还是很贴切的. 迭代器相当于是电视机的遥控器, 聚合对象相当于是电视机. 电视机中有很多电视频道的集合, 那些电视频道到底是怎么组合在一起的, 我们并不知道, 也无需知道, 因为遥控器也就是迭代器给我们提供了遍历电视频道的方法, 我们只需要调用不同的迭代器方法即可遍历电视机中所有节目的集合. 在软件开发中, 我们经常需要使用聚合对象来存储一系列的数据. 聚合对象有两个职责: 存储数据; 遍历数据. 从依赖性来看, 前者是聚合对象的基本职责; 而后者既是可变的, 也是可分离的. 因此可将遍历数据的行为从聚合对象中分离出来, 封装在一个被称为"迭代器"的对象中, 由迭代器来提供遍历局和对象内部数据的行为, 这将简化聚合对象的设计, 更符合"单一职责原则"的要求. 迭代器模式: 提供一种方法来访问聚合对象, 而不用暴露这个对象的内部表示, 其别名为 游标. 迭代器模式是一种对象行为型模式. 在迭代器模式中包含聚合和迭代器两个层次结构, 考虑到系统的灵活性和可扩展性, 在迭代器模式中应用了工厂方法模式, 模式结构图如下: 迭代器模式中的几个角色: 抽象迭代器(Iterator): 它定义了访问和遍历元素的接口, 声明了用于遍历数据元素的方法. 具体迭代器(ConcreteIterator):