设计模式篇之 迭代器模式 Iterator
目的
迭代器是一种行为型设计模式,它让你可以在不暴露其底层表示(列表、栈、树等)的情况下遍历集合中的元素。
问题
集合是编程中最常用的数据类型之一。然而,集合只是一个对象组的容器。

大多数集合在其底层使用简单的列表来存储元素。然而,有些集合是基于栈、树、图和其他复杂的数据结构构建的。
但无论集合的结构如何,它都必须提供某种方式来访问其元素,以便其他代码可以使用这些元素。应该有一种方法可以逐个访问集合中的每个元素,而不会重复访问相同的元素。
如果你的集合是基于列表的,那么这听起来似乎很简单。你只需要循环遍历所有元素即可。但是,你如何依次遍历像树这样复杂数据结构的元素呢?例如,有一天你可能只需要对树进行深度优先遍历。然而,第二天你可能需要广度优先遍历。再过一周,你可能需要其他东西,比如随机访问树的元素。