TypeScript 设计模式 - 单例模式

6 阅读1分钟

单例模式

以下是一个 TypeScript 中实现单例模式的示例,展示如何确保某个类在全局范围内只有一个实例:

示例

class Singleton {
    private static instance: Singleton;

    // 私有构造函数,禁止外部实例化
    private constructor() {
        console.log('Singleton instance created.');
    }

    // 静态方法:获取唯一实例
    public static getInstance(): Singleton {
        if (!Singleton.instance) {
            Singleton.instance = new Singleton();
        }
        return Singleton.instance;
    }

    // 示例方法
    public someBusinessLogic(): void {
        console.log('Executing some business logic.');
    }
}

// 使用示例
const singleton1 = Singleton.getInstance();
singleton1.someBusinessLogic();

const singleton2 = Singleton.getInstance();
singleton2.someBusinessLogic();

// 检查是否是同一个实例
console.log(singleton1 === singleton2); // 输出: true

关键点解析

  1. 私有构造函数

    • 通过将构造函数设为私有,外部代码无法通过 new 关键字创建类的实例。
  2. 静态属性 instance

    • 用于存储类的唯一实例。
  3. 静态方法 getInstance

    • 检查 instance 是否已创建,如果未创建则创建并返回;如果已存在则直接返回。
  4. 实例共享

    • 多次调用 getInstance 方法,返回的始终是同一个实例。