我最近遇到了一些看起来像这样的代码,
class MyClass {
private static instance: MyClass;
private myString: string;
public static Instance(myString) {
if (!this.instance) {
this.instance = new this(myString);
}
return this.instance;
}
private constructor(myString: string) {
this.myString = myString;
}
public getMyString() {
console.log(this.myString);
}
}
我的问题是,做这样的事情需要什么?人们为什么要创建这样的实例,而不是创建“普通方式”类的实例。
做这样的事情有什么好处?
答案 0 :(得分:1)
它看起来像Singleton pattern。此模式用于确保一个类只有一个实例:构造函数是私有的,因此不能从该类的外部使用它。
关于这个特定的实现,我将建议一些解决方法:
this.instance
应该改为MyClass.instance
new this(myString)
中,myString
将是undefined
,因为无法从静态上下文中引用非静态变量myString
public static Instance { ... }
应该是静态方法,而不是:public static instance() { ... }