迭代子模式

xiaoxiao2021-02-28  98

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

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

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

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

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

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

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

转载请注明原文地址: https://www.6miu.com/read-68498.html

最新回复(0)