美文网首页
《设计模式》之迭代器模式

《设计模式》之迭代器模式

作者: 魅猫之 | 来源:发表于2020-07-04 16:19 被阅读0次

意图:提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示。

迭代器模式是一种非常常见的设计模式,在我们的编程中,想要遍历一个非常大的容器对象,往往要先把数据都装进容器,再使用for循环等等的方式;

但是很多情况下,这个容器大到普通的内存都装不下的时候,暴力的遍历就行不通了;

而且,很多时候,这个容器里面的元素并不是直接能读取的,有可能是从网络读取,有可能是读文件,有可能是随机生成,所以不能简单暴力的for循环;

另外,如果这个容器到底有多少个元素也不清楚呢?也无法使用for循环这种方式;

这时候,迭代器模式就很有用,你不需要知道容器对象里有多少个元素,我只要告诉你,“还有没有元素”就行了,一直到取完了,也就迭代完了。

代码:

// 通用的迭代器接口
interface IIterator<T> {
    hasNext: () => boolean
    next: () => T
}

class ArrayContainer implements IIterator<any> {
    private arr = [1, 2, 3, 4, 5]
    private index = 0

    public hasNext = () => {
        return this.index <= this.arr.length - 1
    }

    public next = () => {
        const e = this.arr[this.index]
        this.index++
        return e
    }
}

// Test
const c = new ArrayContainer()
while(c.hasNext()) {
    console.log(c.next())
}

输出结果:

[LOG]: 1 
[LOG]: 2 
[LOG]: 3 
[LOG]: 4 
[LOG]: 5 

相关文章

网友评论

      本文标题:《设计模式》之迭代器模式

      本文链接:https://www.haomeiwen.com/subject/dkvuqktx.html