定义:
提供一种方法顺序访问一个聚合对象中各个元素,而有不暴露该对象的内部表示
生活例子:
1》公交上的售票员,一个个乘客去买票
2》卖水机器上,一瓶瓶的出来的
使用迭代器的情况:
1》 当你需要对聚集有多种方式遍历时候。
2》需要访问聚集对象的内容,而有不暴露其内部表示
3》需要提供一个统一的接口,用来遍历各种类型的聚集对象。
迭代器(Iterator)模式:分类了集合对象的遍历行为,抽象出一个迭代器类来负责,这样既可以做到不暴露集合的内部结构,又可让外部代码透明的访问集合内部的数据。
Cocoa touch
外部迭代器 内部迭代器NSEnumerator 类的私有具体子类返回枚举器对象,可以遍历各种聚集。
基于块的枚举
快速枚举 for ...in
内部枚举 makeObjectsPerformSelector:
PS: 迭代器与访问者有点类似,尤其是把遍历算法放到访问者中或者在遍历聚合体时让内部迭代器对元素执行操作的时候。
一般和其他相关的模式有组合
、工厂方法
、备忘录
。 组合模式常常依靠迭代器来遍历其递归结构。 多态的迭代器依靠工厂方法来实例化适当的迭代器具体子类。 有时,备忘录跟迭代器模式一起使用。 迭代器可以使用备忘录来截取迭代的状态。 迭代器的内部保存备忘录,在以后从它回复其内部状态。
网友评论