iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >如何进行JavaScript设计模型Iterator的实践
  • 136
分享到

如何进行JavaScript设计模型Iterator的实践

2024-04-02 19:04:59 136人浏览 薄情痞子
摘要

今天就跟大家聊聊有关如何进行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: 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的实践有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注编程网JavaScript频道,感谢大家的支持。

--结束END--

本文标题: 如何进行JavaScript设计模型Iterator的实践

本文链接: https://www.lsjlt.com/news/82571.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何进行JavaScript设计模型Iterator的实践
    今天就跟大家聊聊有关如何进行JavaScript设计模型Iterator的实践,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所...
    99+
    2024-04-02
  • JavaScript设计模型Iterator的示例分析
    这篇文章给大家分享的是有关JavaScript设计模型Iterator的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Iterator Pattern是一个很重要也很简单...
    99+
    2024-04-02
  • .Net行为型设计模式之迭代器模式(Iterator)
    目录一、动机(Motivate)二、意图(Intent)三、结构图四、模式的组成五、迭代器模式的代码实现六、迭代器模式的实现要点:迭代器模式的优点:迭代器模式的缺点:迭代器模式的使用...
    99+
    2024-04-02
  • JavaScript 设计模式之洋葱模型原理及实践应用
    目录前言洋葱模型实践总结前言 先来听听一个故事吧,今天产品提了一个业务需求:用户在一个编辑页面,此时用户点击退出登录,应用需要提示用户当前有编辑内容未保存,是否保存;当用户操作完毕后...
    99+
    2024-04-02
  • 如何在Couchbase中进行有效的数据模型设计
    在Couchbase中进行有效的数据模型设计是非常重要的,以下是一些指导原则: 考虑数据访问模式:在设计数据模型时,首先要考虑数...
    99+
    2024-04-09
    Couchbase
  • 如何进行JavaScript设计模式入门和框架中的使用
    本篇文章为大家展示了如何进行JavaScript设计模式入门和框架中的使用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。在编写JS和组装代码的过程中,运用一定的设计...
    99+
    2024-04-02
  • PHP 设计模式在大型项目中的实践
    大型 php 项目中设计模式的实践至关重要,本文介绍了几个常用模式及其实战案例:单件模式:确保仅实例化一个特定类的对象,用于管理全局资源。观察者模式:允许对象订阅事件,以便在事件发生时收...
    99+
    2024-05-07
    php 设计模式 mysql
  • 如何进行C++代码的模块化设计?
    如何进行C++代码的模块化设计引言:在软件开发过程中,模块化设计是一种重要的编程原则,可以提高代码的可读性、可维护性和可重用性。特别是在C++程序开发中,模块化设计可以帮助开发者将代码分解为独立的功能模块,从而更好地组织和管理代码。本文将介...
    99+
    2023-11-02
    C++ 模块化设计 代码设计
  • 如何进行数据库“状态”字段设计的思考与实践
    本篇文章给大家分享的是有关如何进行数据库“状态”字段设计的思考与实践,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。正文最近在做订单及支付相关的...
    99+
    2024-04-02
  • 怎么进行SAP CRM系统订单模型的设计与实现
    怎么进行SAP CRM系统订单模型的设计与实现,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。和传统的增删改查相比,以订单编排领域为例,SAP订单模型的"增"...
    99+
    2023-06-04
  • JavaScript设计模式之原型模式怎么实现
    本篇内容主要讲解“JavaScript设计模式之原型模式怎么实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JavaScript设计模式之原型模式怎么实现”吧!前言设计模式呢最多的可能是用到类...
    99+
    2023-07-02
  • 如何进行SequoiaDB + JanusGraph的实践
    如何进行SequoiaDB + JanusGraph的实践,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。JanusGraph 实...
    99+
    2024-04-02
  • 如何进行DOM模型的入门
    如何进行DOM模型的入门,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。向大家描述一下DOM模型的概念,DOM是DocumentObject...
    99+
    2024-04-02
  • 如何理解JavaScript的设计模式
    本篇文章为大家展示了如何理解JavaScript的设计模式,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。  今天我们就聊一下这三个设计模式  单例模式 / 组合模...
    99+
    2024-04-02
  • PHP核心的设计模式与实践
    PHP核心的设计模式与实践引言:设计模式是软件开发中常用的解决问题的模板,它们提供了一种可重用的解决方案,可以帮助我们在开发过程中遵循最佳实践和良好的软件设计原则。PHP作为一种广泛应用的编程语言,也有许多常见和有用的设计模式可以在核心开发...
    99+
    2023-11-09
    PHP设计模式 PHP核心 核心实践
  • ONNX模型如何进行推理
    ONNX模型可以通过使用ONNX Runtime库进行推理。ONNX Runtime是一个高性能的推理引擎,支持在多种硬件平台上进行...
    99+
    2024-04-02
  • 如何进行ADO.NET实体数据模型的分析
    本篇文章为大家展示了如何进行ADO.NET实体数据模型的分析,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。ADO.NET经过长时间的发展,很多用户都很了解ADO.NET了,这里我发表一下个人理解,和...
    99+
    2023-06-17
  • 如何进行图数据库Nebula Graph 的数据模型和系统架构设计
    本篇文章为大家展示了如何进行图数据库Nebula Graph 的数据模型和系统架构设计,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。下面主要介绍 Nebula Gr...
    99+
    2024-04-02
  • 如何进行Elasticsearch调优实践
    今天给大家介绍一下如何进行Elasticsearch调优实践。文章的内容小编觉得不错,现在给大家分享一下,觉得有需要的朋友可以了解一下,希望对大家有所帮助,下面跟着小编的思路一起来阅读吧。背景Elasticsearch(ES)作为NOSQL...
    99+
    2023-06-05
  • Keras中如何进行模型的集成
    在Keras中进行模型的集成通常有两种方法:平均集成和堆叠集成。 平均集成: 在平均集成中,首先训练多个不同的模型,然后将它们的预...
    99+
    2024-03-14
    Keras
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作