时间:2021-05-26
这篇文章主要介绍了JavaScript设计模型Iterator实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
Iterator Pattern是一个很重要也很简单的Pattern:迭代器!
我们可以提供一个统一入口的迭代器,Client只需要知道有哪些方法,或是有哪些Concrete Iterator,并不需要知道他们底层如何实作!现在就让我们来开始吧!
起手式
Iterator最主要的东西就是两个:hasNext、next。要让Client知道是否还有下一个,和切换到下一个!
定义Interface
实作介面
下面的范例我将会使用Map、Array这两个常见的介面实作。
class iterator1 implements IteratorInterface { index: number dataStorage: any[] constructor() { this.index = 0 this.dataStorage = [] } hasNext(): boolean { return this.dataStorage.length > this.index } next(): any { return this.dataStorage[this.index ++] } addItem(item: any): void { this.dataStorage.push(item) }}// mapclass iterator2 implements IteratorInterface { index: number dataStorage: Map<number, any> constructor() { this.index = 0 this.dataStorage = new Map<number, any>() } hasNext(): boolean { return this.dataStorage.get(this.index) != undefined } next(): any { return this.dataStorage.get(this.index ++) } addItem(item: any): void { this.dataStorage.set(this.dataStorage.size, item) }}Client
我没有实作一个Client,所以我是直接new一个类别出来直接使用!
const i = new iterator1()i.addItem(123)i.addItem(456)i.addItem('dolphin')while(i.hasNext()){ console.log(i.next())}console.log(`====================`)const i2 = new iterator2()i2.addItem(123)i2.addItem(456)i2.addItem('dolphin')while(i2.hasNext()){ console.log(i2.next())}结论
会发现Iterator 1号 2号的结果都是一样的!他们都只需要让Client知道有hasNext、next就好,底层的实作不需要让他们知道!
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了JavaScript实现Iterator模式的方法。分享给大家供大家参考。具体分析如下:经常在网上看到有不少JS设计模式的示例。这里写一下Java
本文实例讲述了javascript解析ajax返回的xml和json格式数据。分享给大家供大家参考,具体如下:写个例子,以备后用一、JavaScript解析返回
本文实例讲述了ES6中Iterator与for..of..遍历用法。分享给大家供大家参考,具体如下:Iterator与for..of..遍历1.Iterator
本文实例讲述了PHP设计模式之迭代器(Iterator)模式。分享给大家供大家参考,具体如下:迭代器有时又称光标(cursor)是程式设计的软件设计模式,可在容
本文实例讲述了jQuery解析XML与传统JavaScript方法的差别。分享给大家供大家参考。具体分析如下:1.传统javascript方法:varxmlDo