如何使用类在JavaScript中实现单例设计模式?

时间:2019-02-05 13:34:33

标签: javascript design-patterns singleton

我看到了一些示例,该示例如何使用javascript中的IIFE来实现单例设计模式,但是我想知道如何使用类来实现它?

3 个答案:

答案 0 :(得分:0)

class Ex {
  static getInstance() {
    if (Ex.instance === null) {
      Ex.instance = new Ex();
    }
    return Ex.instance;
  }
}
Ex.instance = null;

const ex = Ex.getInstance();
console.log(ex);

答案 1 :(得分:0)

尽管您可以做到,但无需使用class。大多数时候,您可以只使用普通的Object并将其视为单例:

export const MySingleton = {
  init(...args) { /*  */ },
  method(...args) { /* do whatever you want */ }
}

然后,例如:

import {MySingleton} from './path/to/mysingleton';

MySingleton.init(1, 2, 3);
MySingleton.method();

如果要使用 fluent API,只需返回thisMySingleton对象:

export const MySingleton = {
  init(...args) {
    /* do some stuff */
    return MySingleton;
  },
  ...
}

结果:

import {MySingleton} from './path/to/mysingleton';

MySingleton.init(1, 2, 3).method();

答案 2 :(得分:0)

javascript中没有类:

  

在ECMAScript 2015中引入的JavaScript类主要是语法糖,而不是JavaScript现有的基于原型的继承。类语法不会向JavaScript引入新的面向对象的继承模型。

重点是,当Singleton模式基于带有私有构造函数和公共访问器的封装时,不可能在JavaScript中定义公共或私有方法。