迭代器模式 - 如何添加或删除聚合中的元素,您最终可以访问元素两次还是完全错过它?

时间:2016-12-10 23:31:02

标签: iterator

如何添加或删除聚合中的元素,您最终可以访问元素两次还是完全错过它?

GoF设计模式在Iterator模式下提到: "如果从聚合中添加或删除元素,您可能最终会访问元素两次或完全错过它"

在发生这种情况时,我想不出用例?

提前致谢。

1 个答案:

答案 0 :(得分:0)

这是一个简单的例子。想象一下,你正在迭代一个类似数组的集合。迭代器可能会跟踪列表中的当前索引。

        *
[ 1, 2, 3, 4 ]

在此示例中,如果在迭代时将元素插入到列表的前面,则索引现在将指向已经看到的元素。

        *
[ 0, 1, 2, 3, 4 ]

同样,如果删除元素,索引现在将跳过元素。

        *
[ 2, 3, 4 ]