创建类的实例以调用静态方法

问题描述 投票:0回答:1

我最近遇到了一些看起来像这样的代码,

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

我的问题是,要做这样的事情需要什么?一个人为什么要创建这样的实例,而不是创建“普通方式”类的实例。

做这样的事情有什么好处?

javascript typescript class static instance
1个回答
0
投票

看起来像Singleton pattern。此模式用于确保一个类只有一个实例:构造函数是私有的,因此不能从该类的外部使用它。

关于这个特定的实现,我会建议一些修复:

  • 静态方法中的[this.instance应该改为MyClass.instancethis.myString中的getMyString()相同。]。
  • 在下面的调用new this(myString)中,myString将为undefined,因为无法从静态上下文中引用非静态变量
  • 无法设置myString
© www.soinside.com 2019 - 2024. All rights reserved.