介绍
※ 顺序访问一个集合
※ 使用者无需知道集合的内部结构(封装)
实现代码(ES6)
class Iterator { //遍历器
constructor(container){
this.list = container.list
this.index = 0
}
next(){
if(this.hasNext()){
return this.list[this.index++]
}
return null
}
hasNext(){
if(this.index >= this.list.length){
return false
}
return true
}
}
class Container { //容器
constructor(list){
this.list = list
}
//生成遍历器
getIterator(){
return new Iterator(this)
}
}
let container = new Container([1,2,3,4,5,6])
let inerator = container.getIterator()
while(inerator.hasNext()){
console.log(inerator.next())
}
设计原则
● 迭代器对象和目标对象分离
● 迭代器将使用者与目标对象隔离开
● 符合开放封闭原则