我看到了一些示例,该示例如何使用javascript中的IIFE来实现单例设计模式,但是我想知道如何使用类来实现它?
答案 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,只需返回this
或MySingleton
对象:
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中定义公共或私有方法。