我今天浏览了 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();
这是某种设计模式吗?
这是单例模式,它允许从任何地方访问同一个实例,而无需传递引用。
它通常被认为是一种反模式,因为它引入了全局状态并恶化了代码库的可测试性。