js 单例模式

发布时间 2023-12-28 12:02:12作者: yoona-lin
import { EventEmitter } from 'eventemitter3';

class H5SSE extends EventEmitter {
    static instance: H5SSE;
    
    static getInstance() {
        if (!H5SSE.instance) {
            H5SSE.instance = new H5SSE();
        }
        return H5SSE.instance;
    }
}

export default H5SSE.getInstance();

上述代码是一个 TypeScript 类的定义,其中使用了单例模式来创建实例。让我们逐行解析代码:

class H5SSE extends EventEmitter {

这行代码定义了一个名为 H5SSE 的类,该类继承自 EventEmitter 类。

    static instance: H5SSE;

这行代码定义了一个静态属性 instance,用于保存 H5SSE 的单例实例。

    static getInstance() {
        if (!H5SSE.instance) {
            H5SSE.instance = new H5SSE();
        }
        return H5SSE.instance;
    }

这是一个静态方法 getInstance(),用于获取 H5SSE 的单例实例。在方法内部,通过检查 H5SSE.instance 是否已存在实例,如果不存在则创建一个新的实例,并将其赋值给 H5SSE.instance。最后,返回 H5SSE.instance

export default H5SSE.getInstance();

这行代码导出了通过调用 H5SSE.getInstance() 获取的 H5SSE 单例实例作为默认导出。

综上所述,通过 H5SSE.getInstance() 方法获取的 H5SSE 实例将是全局唯一的,即单例模式。这样可以确保在整个应用程序中只有一个 H5SSE 实例被创建和使用。