这是什么样的设计模式?

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

我今天浏览了 TypeScript 存储库,发现所有类都是以这种方式实现的:

export class ServiceClass {
  private static instance: ServiceClass;

  private constructor() {}

  public static Instance(): ServiceClass {
    if (!ServiceClass.instance) {
      ServiceClass.instance = new ServiceClass();
    }
    return ServiceClass.instance;
  }

  // public static ServiceMethod1

  // public static ServiceMethod2

  // public static ServiceMethod3
}

类方法的使用方式类似于

new ServiceClass.Instance().ServiceMethod1()

使用

Instance()
方法有什么额外好处?如果类中只存在服务方法,并且要访问它们,您可以执行以下操作,会有什么不同:

const obj = new ServiceClass();
obj.ServiceMethod1();

这是某种设计模式吗?

javascript typescript class design-patterns
1个回答
0
投票

这是单例模式,它允许从任何地方访问同一个实例,而无需传递引用。

它通常被认为是一种反模式,因为它引入了全局状态并恶化了代码库的可测试性。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.