迭代子模式

来源:互联网 发布:顾比均线的通达信源码 编辑:程序博客网 时间:2024/05/16 13:00

前言:
主要应用在对聚集的遍历。

为什么需要使用迭代子模式:
将集合的定义和对集合的遍历操作拆分开来,便于集合操作的扩展。
迭代子对象是对遍历的抽象化。遍历算法被封装在迭代子对象中,因此遍历算法可以独立与聚集对象而变化。

类图:
白盒聚集与外禀迭代子
白盒聚集类图
黑盒聚集与内禀迭代子
黑盒聚集类图

1.Aggregate 抽象聚集角色类:需要包含一个生成迭代子对象的方法。
2.ConcreteAggregate 具体聚集角色类:除开实现抽象类外,在白盒中,还包含获取具体元素,及集合大小的方法。在黑盒中则不必提供。
3.Iterator 抽象迭代子角色类:包含一些移动游标及获取当前元素的方法。
4.ConcreteIterator 具体迭代子角色类:在黑盒实现中,这个类是包含在具体聚集角色类中的。
实现双重接口的方法一般是使用内部类。

其他概念:
静态迭代
迭代子对象保存了聚集对象的一份快照。

动态迭代
迭代子对象只保存聚集对象的引用,因此需要考虑聚集对象元素的变化。

快速失败
如果聚集对象的元素在一个动态的迭代过程中发生变化时,如果此时迭代过程无法进行下去,则应立即抛出一个异常。

原创粉丝点击