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

相关推荐

发表回复

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

云产品限时秒杀。精选云产品高防服务器,20M大带宽限量抢购  >>点击进入