MST
星途 面试题库

面试题:TypeScript单例模式静态成员在多模块中的应用

假设项目中有多个模块,每个模块都可能需要访问单例对象。在TypeScript中,如何通过静态成员确保单例类在不同模块间正确共享,且避免重复实例化?请给出具体实现思路及代码示例。
22.0万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试
  1. 实现思路
    • 使用TypeScript的类和静态成员来实现单例模式。将单例实例定义为类的静态成员,通过一个静态方法来获取这个实例。如果实例不存在,则创建它;如果已存在,则直接返回已有的实例。这样不同模块在调用获取实例的静态方法时,会得到同一个单例对象,避免重复实例化。
  2. 代码示例
class Singleton {
    // 定义静态成员存储单例实例
    private static instance: Singleton;

    // 私有构造函数,防止外部直接实例化
    private constructor() {}

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

// 不同模块使用单例对象示例
// 模块1
const singleton1 = Singleton.getInstance();

// 模块2
const singleton2 = Singleton.getInstance();

// 这里singleton1和singleton2是同一个实例
console.log(singleton1 === singleton2);