如何添加或删除聚合中的元素,您最终可以访问元素两次还是完全错过它?
GoF设计模式在Iterator模式下提到: "如果从聚合中添加或删除元素,您可能最终会访问元素两次或完全错过它"
在发生这种情况时,我想不出用例?
提前致谢。
答案 0 :(得分:0)
这是一个简单的例子。想象一下,你正在迭代一个类似数组的集合。迭代器可能会跟踪列表中的当前索引。
*
[ 1, 2, 3, 4 ]
在此示例中,如果在迭代时将元素插入到列表的前面,则索引现在将指向已经看到的元素。
*
[ 0, 1, 2, 3, 4 ]
同样,如果删除元素,索引现在将跳过元素。
*
[ 2, 3, 4 ]