如何实现使用类JavaScript中的Singleton设计模式?

问题描述 投票:-1回答:3

我看到一些例子,说明如何实现在JavaScript中使用IIFE Singleton设计模式,但我不知道如何使用类来实现呢?

javascript design-patterns singleton
3个回答
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);

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();

如果你想有一个流畅的API,只是在回报thisMySingleton对象:

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

结果是:

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

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

0
投票

有在JavaScript没有类:

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

问题的关键是这是不可能的,而Singleton模式是基于与私有构造函数和公共访问封装在JavaScript中定义的公共或私有方法。

© www.soinside.com 2019 - 2024. All rights reserved.