TypeScript单例创建

TypeScript单例创建是一种设计模式,用于确保一个类只有一个实例,并提供一个全局访问点,在TypeScript中,我们可以使用不同的方法来实现单例模式,以下是两种常见的实现方法:

TypeScript单例创建
(图片来源网络,侵删)

1、懒汉式(Lazy initialization):

懒汉式是指在第一次调用时才创建实例,这种方法的优点是延迟了实例的创建,节省了资源,以下是一个使用懒汉式实现的TypeScript单例类:

class Singleton {
  private static instance: Singleton | null = null;
  private constructor() {}
  public static getInstance(): Singleton {
    if (Singleton.instance === null) {
      Singleton.instance = new Singleton();
    }
    return Singleton.instance;
  }
}
const instance1 = Singleton.getInstance();
const instance2 = Singleton.getInstance();
console.log(instance1 === instance2); // 输出 true,表示两个实例是同一个对象

在这个例子中,我们首先定义了一个名为Singleton的类,这个类有一个静态属性instance,用于存储类的实例,我们还定义了一个私有构造函数,以防止外部直接创建实例,我们定义了一个名为getInstance的静态方法,用于获取类的实例,在这个方法中,我们首先检查instance属性是否为null,如果是,则创建一个新的实例并将其赋值给instance属性,我们返回instance属性的值,这样,我们就可以确保每次调用getInstance方法时,都返回相同的实例。

2、饿汉式(Eager initialization):

饿汉式是指在类加载时就创建实例,这种方法的优点是简单易懂,但可能会浪费资源,以下是一个使用饿汉式实现的TypeScript单例类:

class Singleton {
  private static instance: Singleton = new Singleton();
  private constructor() {}
  public static getInstance(): Singleton {
    return Singleton.instance;
  }
}
const instance1 = Singleton.getInstance();
const instance2 = Singleton.getInstance();
console.log(instance1 === instance2); // 输出 true,表示两个实例是同一个对象

在这个例子中,我们首先定义了一个名为Singleton的类,这个类有一个静态属性instance,并在类加载时就创建了一个新的实例并将其赋值给instance属性,我们还定义了一个私有构造函数,以防止外部直接创建实例,我们定义了一个名为getInstance的静态方法,用于获取类的实例,在这个方法中,我们直接返回instance属性的值,这样,我们就可以确保每次调用getInstance方法时,都返回相同的实例。

以上就是两种常见的TypeScript单例实现方法,懒汉式和饿汉式各有优缺点,具体选择哪种方法取决于实际需求,懒汉式适用于在第一次调用时才需要创建实例的场景,而饿汉式适用于在类加载时就确定需要创建实例的场景,无论采用哪种方法,都可以确保一个类只有一个实例,并提供一个全局访问点。

原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/476295.html

本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。

(0)
未希
上一篇 2024-04-15 03:13
下一篇 2024-04-15 03:15

相关推荐

  • 如何判断服务器套餐是否物有所值?

    服务器套餐好不好,取决于多个因素,包括在线率、加载速度、价格、功能和用户评价,以下是对服务器套餐的详细分析:1、在线率:在线率是指服务器能够正常运行和响应请求的时间比例,通常要求在99.9%以上,高在线率意味着服务器稳定可靠,能够持续提供服务,减少因服务器故障导致的业务中断风险,2、加载速度:加载速度指服务器将……

    2025-01-13
    011
  • Cookies 与域名之间有何关联?

    Cookies 是网站用来存储用户信息的小型文本文件,而域名则是网站在互联网上的地址。

    2025-01-13
    07
  • 如何为服务器上的特定程序指定多网卡?

    在服务器环境中,多网卡(Multi-NIC)配置通常用于提高网络吞吐量、实现冗余或负载均衡,对于需要指定程序使用特定网络接口的场景,可以通过多种方法来实现,包括操作系统级别的路由表调整、程序内部的网络设置以及使用第三方工具等,本文将详细介绍如何在Linux环境下为特定程序指定网卡,并讨论相关的配置和管理策略……

    2025-01-13
    06
  • 如何修改服务器的主机名?

    修改服务器主机名是一个常见的操作,通常用于标识服务器、管理网络配置或满足特定应用需求,以下是几种在不同操作系统中修改主机名的方法:一、使用hostnamectl命令修改主机名1. 查看当前主机名hostname2. 修改主机名sudo hostnamectl set-hostname 新主机名3. 验证修改ho……

    2025-01-13
    011

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

产品购买 QQ咨询 微信咨询 SEO优化
分享本页
返回顶部
云产品限时秒杀。精选云产品高防服务器,20M大带宽限量抢购 >>点击进入