3.单例模式
单例模式(Singleton Pattern)的主要目的是:保证一个类在系统中只有一个实例,并提供统一访问入口,避免多实例导致状态不一致
适合使用单例模式的场景
- 全局配置中心、缓存中心、日志中心等需要共享同一份状态
- 某类对象创建成本高,希望只初始化一次并重复使用
- 需要一个全局可访问实例,但又不希望实例被随意
new - 希望把初始化逻辑收敛到一个固定入口统一管理
类型定义
interface AppConfig {
apiBaseUrl: string;
timeout: number;
retry: number;
}单例类
class ConfigCenter {
private static instance: ConfigCenter | null = null;
private config: AppConfig = {
apiBaseUrl: "https://api.example.com",
timeout: 5000,
retry: 2,
};
private constructor() {}
static getInstance(): ConfigCenter {
if (!ConfigCenter.instance) {
ConfigCenter.instance = new ConfigCenter();
}
return ConfigCenter.instance;
}
setConfig(patch: Partial<AppConfig>): void {
this.config = { ...this.config, ...patch };
}
getConfig(): AppConfig {
return { ...this.config };
}
}使用示例
const configA = ConfigCenter.getInstance();
const configB = ConfigCenter.getInstance();
configA.setConfig({ timeout: 8000, retry: 3 });
console.log("A 配置:", configA.getConfig());
console.log("B 配置:", configB.getConfig());
console.log("是否同一实例:", configA === configB); // true