JavaScript中的迭代器模式

209 阅读1分钟

介绍

※ 顺序访问一个集合

※ 使用者无需知道集合的内部结构(封装)

实现代码(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())
}

设计原则

● 迭代器对象和目标对象分离

● 迭代器将使用者与目标对象隔离开

● 符合开放封闭原则