定义

保证一个类只有一个实例,并提供访问这个实例的接口。

代码实现

  1. // 方式一:将这个实例放在类上
  2. class Singleton {
  3. static getInstance() {
  4. if (!Singleton.instance) {
  5. Singleton.instance = new Singleton();
  6. }
  7. return Singleton.instance;
  8. }
  9. }
  1. // 方式二:将这个实例放在闭包里
  2. class Singleton {}
  3. Singleton.getInstance = (function () {
  4. let instance = null;
  5. return function () {
  6. if (!instance) {
  7. instance = new Singleton();
  8. }
  9. return instance;
  10. };
  11. })();

例子

tim-js-sdk

  1. import TIM from 'tim-js-sdk';
  2. // 创建 SDK 实例,`TIM.create()`方法对于同一个 `SDKAppID` 只会返回同一份实例
  3. const tim = TIM.create(options); // SDK 实例通常用 tim 表示