关于单例模式我所知道的

56 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

对于前端而言,单例模式并不陌生,浏览器中的 window 就是最典型的单例模式。

举个例子: 单例模式 codesandbox

定义

一个类只允许创建一个对象(或者叫实例),那这个类就是一个单例类,这种设计模式就叫作单例设计模式,简称单例模式。

实现

class Singleton {
  private static instance: Singleton;     
  private constructor() {}
  public static getInstance(): Singleton {
    if (!Singleton.instance) {
      Singleton.instance = new Singleton();
    }
    return Singleton.instance;
  }

  public someBusinessLogic() {
    // ...
  }
}

function clientCode() {
  const s1 = Singleton.getInstance();
  const s2 = Singleton.getInstance();

  if (s1 === s2) {
    console.log("Singleton works, both variables contain the same instance.");
  } else {
    console.log("Singleton failed, variables contain different instances.");
  }
}

clientCode();

应用场景

  1. 需要频繁实例化然后销毁的对象 (弹窗 dialog)
  2. 创建对象时耗时过多或耗资源过多,但又经常用到的对象。(window)
  3. 系统的配置信息或者用户信息 info config