JavaScript设计模型Iterator实例解析
这篇文章主要介绍了JavaScript设计模型Iterator实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
Iterator Pattern是一个很重要也很简单的Pattern:迭代器!
我们可以提供一个统一入口的迭代器,Client只需要知道有哪些方法,或是有哪些Concrete Iterator,并不需要知道他们底层如何实作!现在就让我们来开始吧!
起手式
Iterator最主要的东西就是两个:hasNext、next。要让Client知道是否还有下一个,和切换到下一个!
定义Interface
interface IteratorInterface { index: number dataStorage: any hasNext(): boolean next(): any addItem(item: any): void }
实作介面
下面的范例我将会使用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) } }
// map class 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就好,底层的实作不需要让他们知道!
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
相关文章
html2canvas属性和使用方法以及如何使用html2canvas将HTML内容写入Canvas生成图片
为大家介绍一款JS截图插件html2canvas.js, 它可以通过纯JS对浏览器端经行截屏,下面就为大家介绍一下html2canvas.js属性和具体使用方法,并为大家提供了一个实例2020-01-01JavaScript实现设置默认日期范围为最近40天的方法分析
这篇文章主要介绍了JavaScript实现设置默认日期范围为最近40天的方法,结合实例形式分析了javascript结合HTML5 date元素进行时间运算相关操作技巧,需要的朋友可以参考下2017-07-07uni-app调取接口的3种方式以及封装uni.request()详解
我们在实际工作中要将数据传输到服务器端,从服务器端获取信息,都是通过接口的形式,下面这篇文章主要给大家介绍了关于uni-app调取接口的3种方式以及封装uni.request()的相关资料,需要的朋友可以参考下2022-08-08
最新评论