如何进行JavaScript设计模型Iterator的实践
发表于:2024-11-11 作者:千家信息网编辑
千家信息网最后更新 2024年11月11日,今天就跟大家聊聊有关如何进行JavaScript设计模型Iterator的实践,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。起手式Iterat
千家信息网最后更新 2024年11月11日如何进行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) }}
// mapclass iterator2 implements IteratorInterface { index: number dataStorage: Mapconstructor() { this.index = 0 this.dataStorage = new Map() } 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就好,底层的实作不需要让他们知道!
看完上述内容,你们对如何进行JavaScript设计模型Iterator的实践有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。
内容
模型
实践
设计
两个
介面
底层
迭代
重要
东西
入口
就是
常见
方法
更多
知识
篇文章
类别
结果
范例
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全是全球性挑战 共建
苏州邦果利互联网科技有限公司
算法开发和软件开发的区别
实况2007数据库
ios上传服务器
在远程服务器mt4发不了邮件
软件开发工作的有关论文
4代服务器内存和台式机内存区别
如何推进行业网络安全建设
软件开发过程有哪几种
恒银金融软件开发
服务器被人打多久能恢复
华为 开发数据库
重庆程序软件开发公司
制证软件开发
ps5玩游戏服务器无法连接
广西微易微网络技术
网络安全培训班课程
boss直聘i 网络安全审查
建党100周年网络安全
软件开发合同实验目的
网络安全智能化革命
数据库数据文件收缩前重建
下列不属于分布式数据库的是
鲲鹏服务器能应用于嵌入式开发吗
网络安全与系统运维科职责
江西教育网络安全大学
中国支付宝网络技术
治理网络安全法规有哪些
短视频可以存数据库吗