关于单例模式我所知道的

简介: 关于单例模式我所知道的

image.png

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

对于前端而言,单例模式并不陌生,浏览器中的 window 就是最典型的单例模式。

举个例子:单例模式 codesandbox


定义


一个类只允许创建一个对象(或者叫实例),那这个类就是一个单例类,这种设计模式就叫作单例设计模式,简称单例模式。


实现


class Singleton {
  private static instance: Singleton;     
  private constructor() {}
  public static getInstance(): Singleton {
    if (!Singleton.instance) {
      Singleton.instance = new Singleton();
    }
    return Singleton.instance;
  }
  public someBusinessLogic() {
    // ...
  }
}
function clientCode() {
  const s1 = Singleton.getInstance();
  const s2 = Singleton.getInstance();
  if (s1 === s2) {
    console.log("Singleton works, both variables contain the same instance.");
  } else {
    console.log("Singleton failed, variables contain different instances.");
  }
}
clientCode();

应用场景


  1. 需要频繁实例化然后销毁的对象 (弹窗 dialog)
  2. 创建对象时耗时过多或耗资源过多,但又经常用到的对象。(window)
  3. 系统的配置信息或者用户信息 info config
目录
相关文章
|
Linux Shell
【Shell脚本】Linux安装Nexus的两种方式以及开机自启
【Shell脚本】Linux安装Nexus的两种方式以及开机自启
|
7月前
|
人工智能 自然语言处理 算法
经典大模型提示词工程技术路线概述
本文概述几种经典提示词工程方法,总结关键信息,分析其优势和局限,并分享笔者的一点思考。
719 105
经典大模型提示词工程技术路线概述
|
9月前
|
数据挖掘
薪薪优选视频号小店系统开发/千星计划模式
薪薪优选视频号小店系统开发是一个综合性的项目,它结合了短视频平台的流量优势和电商带货功能,旨在通过视频号小店为商家和达人提供一个高效、便捷的销售和带货平台
|
监控 安全 测试技术
构建高效精准测试平台:设计与实现全攻略
在软件开发过程中,精准测试是确保产品质量的关键环节。一个高效、精准的测试平台能够自动化测试流程,提高测试覆盖率,缩短测试周期。本文将分享如何设计和实现一个精准测试平台,从需求分析到技术选型,再到具体的实现步骤。
284 0
|
机器学习/深度学习 自然语言处理 监控
|
存储 NoSQL Java
使用redis进行手机验证码的验证、每天只能发送三次验证码 (redis安装在虚拟机linux系统中)
该博客文章展示了如何在Linux虚拟机上使用Redis和Jedis客户端实现手机验证码的验证功能,包括验证码的生成、存储、验证以及限制每天发送次数的逻辑,并提供了测试结果截图。
使用redis进行手机验证码的验证、每天只能发送三次验证码 (redis安装在虚拟机linux系统中)
|
安全 网络安全 数据安全/隐私保护
订单支付异常情况处理
订单支付异常情况处理
642 1
|
存储 算法 数据可视化
|
设计模式 测试技术 uml
面向对象设计的九大基本原则 (GRASP)
面向对象设计的九大基本原则 (GRASP)
1366 0