单例模式
以下是一个 TypeScript 中实现单例模式的示例,展示如何确保某个类在全局范围内只有一个实例:
示例
class Singleton {
private static instance: Singleton;
// 私有构造函数,禁止外部实例化
private constructor() {
console.log('Singleton instance created.');
}
// 静态方法:获取唯一实例
public static getInstance(): Singleton {
if (!Singleton.instance) {
Singleton.instance = new Singleton();
}
return Singleton.instance;
}
// 示例方法
public someBusinessLogic(): void {
console.log('Executing some business logic.');
}
}
// 使用示例
const singleton1 = Singleton.getInstance();
singleton1.someBusinessLogic();
const singleton2 = Singleton.getInstance();
singleton2.someBusinessLogic();
// 检查是否是同一个实例
console.log(singleton1 === singleton2); // 输出: true
关键点解析
-
私有构造函数:
- 通过将构造函数设为私有,外部代码无法通过
new
关键字创建类的实例。
- 通过将构造函数设为私有,外部代码无法通过
-
静态属性
instance
:- 用于存储类的唯一实例。
-
静态方法
getInstance
:- 检查
instance
是否已创建,如果未创建则创建并返回;如果已存在则直接返回。
- 检查
-
实例共享:
- 多次调用
getInstance
方法,返回的始终是同一个实例。
- 多次调用