迭代器(Iterator)模式的定义:提供一个对象来顺序访问聚合对象中的一系列数据,而不暴露聚合对象的内部表示。迭代器模式是一种对象行为型模式,其主要优点如下。
1 访问一个聚合对象的内容而无须暴露它的内部表示。
2 遍历任务交由迭代器完成,这简化了聚合类。
3 它支持以不同方式遍历一个聚合,甚至可以自定义迭代器的子类以支持新的遍历。
4 增加新的聚合类和迭代器类都很方便,无须修改原有代码。
5 封装性良好,为遍历不同的聚合结构提供一个统一的接口。
其主要缺点是:增加了类的个数,这在一定程度上增加了系统的复杂性。
class StudyVideo: Interator {
typealias type = String
private var teachers = Array<type>()
var curr = 0
func add(name: type){
teachers.append(name)
}
func next() -> type? {
if curr < teachers.count {
let g = teachers[curr]
curr += 1
return g
} else {
return nil
}
}
func reset() {
teachers.removeAll()
curr = 0
}
}
let s = StudyVideo()
s.add(name: "三上悠亜")
s.add(name: "深田えいみ")
s.add(name: "波多野結衣")
while let s = s.next() {
print(s)
}
//三上悠亜
//深田えいみ
//波多野結衣