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