首页 > 其他分享 >1.前端设计模式之单例模式

1.前端设计模式之单例模式

时间:2023-09-07 22:01:44浏览次数:57  
标签:return 前端 counter 模式 instance let 单例 设计模式

无论从实现还是从理论定义上看,单例模式都是最简单的模式,没有之一。

单例模式顾名思义就是在整个应用中只存在一个对象实例。 

使用这种模式一般为了全局共享资源和出于性能考虑减少过多创建实例带来的性能和资源开销。 

全局共享资源:

比如全局配置对象,在项目中我们经常用到一些需要全局共享的配置项,比如应用名称、Logo路径、上传文件路径等。

减少性能开销:

比如数据库链接池,链接池对象一般会使用单例模式,这样可以控制创建的数据库链接数,避免不必要的资源消耗。

实现方式一:

按照面向对象的编程思想基于ES2016语法我们可以在JavaScript中这样定义一个单例计数器:

let instance;
let counter = 0;
 
class Counter {
  constructor() {
    if (instance) {//这里是为了保证只能实例化一次
      throw new Error("You can only create one instance!");
    }
    instance = this;
  }
  getInstance() {
    return this;
  }
 	
  getCount() {
    return counter;
  }
 
  increment() {
    return ++counter;
  }
 
  decrement() {
    return --counter;
  }
}

完整代码

这样写,还不能叫简单到没有之一,在JavaScript中实现单例可以直接用对象字面量。

实现方式2: 

let count = 0;

const counter = {
  increment() {
    return ++count;
  },
  decrement() {
    return --count;
  }
};

Object.freeze(counter);//冻结对象防止外部修改
export { counter };

完整代码

标签:return,前端,counter,模式,instance,let,单例,设计模式
From: https://blog.51cto.com/u_14256460/7402093

相关文章

  • 前端数据可视化:利用D3.js创建动态图表
    前言数据可视化是将数据以图表、图形等形式展示出来,以便更直观地理解和分析数据。D3.js(Data-DrivenDocuments)是一个强大的JavaScript库,用于创建交互式和动态的数据可视化。本文将介绍如何使用D3.js创建动态图表,并通过一个具体的示例来说明。示例:柱状图我们以柱状图为例,展示一......
  • 一文搞定,PO设计模式详解
    PO模式:全称:pageobjece,分层机制,让不同层去做不同类型的事情,让代码结构清晰,增加复⽤性。PO模式的优势:1)效率⾼:同理,PO模式的逻辑层⽅法有具体定义,情况和元素发⽣变化⼀样修改逻辑层,业务层不变。这样看来结构简单清晰,舒服更符合⼈类习惯,普通⽅式就是继续堆case。2)复⽤多收益⼤:同样......
  • 前端请求地址含特殊字符"+"后端接收数据显示空格
    问题描述:前端测试Get请求访问,path中的参数含有加号,后端过滤器中使用request.getParameter()方法无法获取。请求地址:http://localhost:8899/bookmark/getByUser?encryData=g3DGtZnczC7SUm+vRvkaYg==后端过滤器中接收参数如图所示,其中查询字符串是request.getQuerySt......
  • 从追MM谈Java的23种设计模式
    1、FACTORY—追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了。麦当劳和肯德基就是生产鸡翅的Factory.以下是引用片段:实例一:publicclassFactory{......
  • 前端响应式设计
    前端响应式设计:构建适应不同屏幕大小的自适应网站随着互联网的普及和移动设备的广泛使用,网站的设计需要适应各种屏幕大小和设备类型。前端响应式设计是一种使网站能够自适应不同屏幕尺寸和设备的技术。本文将介绍前端响应式设计的基础知识和实现方法。一、响应式设计的基础知识响应......
  • 行为型设计模式-备忘录 Memento
    简介允许在不暴露对象实现细节的情况下保存和恢复对象之前的状态,该状态保存在对象之外,这样就可以不破坏原有对象的封装性了。角色Originator原发器即需要被保存状态的类抽象Memento备忘录类定义备忘录基本接口可以看做成是快照Snapshot具体Memento备忘录类实......
  • 行为型设计模式-状态 State
    简介跟状态机密切相关。有限状态机FSM包含状态、事件、动作三个元素。当发生一个事件时,引发老状态变成新状态,并执行一个动作。状态和行为间一般是有限制的,如某些行为只能再某些状态下进行,某些状态只能触发某些行为。简单的状态间转换可使用ifelse。更有条理的可以用查表......
  • 行为型设计模式-策略 Strategy
    简介一组实现了同一个策略接口的策略,可以随时指定用哪一种策略完成业务。策略模式其实跟桥接模式很像,都是通过持有另一个对象,达到组合的效果。角色Context上下文可设置使用的Strategy抽象Strategy具体Strategy类图如图,Context使用setStrategy方法设置当前使......
  • 行为型设计模式-模板方法 Template Method
    简介父类抽象类定义大的处理流程,部分细节做成抽象方法,留给子类去实现。如Java的JUnit中,setUptearDown方法都是留给具体的测试用例来写,Servlet中service处理了一个请求的大部分工作,留下doGet和doPost给业务自定义处理。另外callback一般分两种方式:同步回调、异步回调,其中同步......
  • springBoot long类型 长id 到前端丢失精度问题
    在SpringBoot中,如果将Long类型的id传递到前端,可能会遇到精度丢失的问题。这是因为JavaScript无法精确地表示大于Number.MAX_SAFE_INTEGER(即9007199254740991)的整数。为了解决这个问题,你可以采用以下方法之一:方式1:通过注解方式@Data@EqualsAndHashCode(callSuper=false)......