TypeScript 设计模式之【单例模式】
文章目录
- **单例模式**: 独一无二的特工
- 我们为什么需要这样的特工?
- 单例模式的秘密:如何培养这样的特工?
- 特工的利与害
- 代码实现
- 单例模式的主要优点
- 单例模式的主要缺点
- 单例模式的适用场景
- 总结
单例模式: 独一无二的特工
单例模式就像是一个秘密组织里的特殊特工。这个特工非常独特,整个组织里只有他一个人,而且随时待命,随叫随到。
我们为什么需要这样的特工?
因为它独一无二: 就像詹姆斯·邦德,007只有一个。我们组织不需要多个一模一样的特工,那样会造成混乱。而且它时时刻刻待命,所有人都知道去哪里找这个特工。不用满世界找,一个电话就能联系上。
单例模式的秘密:如何培养这样的特工?
特工的培训是绝密的(私有构造函数),没人知道他是怎么被训练出来的。而且他特殊联络人,组织安排了一个特殊的联络人(静态方法)。只有通过这个联络人,你才能接触到这个特工。
特工的利与害
第一,方便,所有人都知道去哪里找这个特工,不用满世界找,一个电话就能联系上;其次,唯一,组织里只有一个这样的特工。不用担心重复;最后,可靠,特工总是待命状态(静态变量),不用每次都重新培训。
代码实现
class SecretAgent {
// 特工
private static instance: SecretAgent;
// 特工的联络人
private constructor() {
// 私有构造函数,防止外部实例化
console.log("特工被创建了");
}
// 获取特工
public static getInstance(): SecretAgent {
if (!SecretAgent.instance) {
SecretAgent.instance = new SecretAgent();
}
return SecretAgent.instance;
}
// 特工执行任务
public doMission(): void {
console.log("执行任务");
}
}
// 联系特工
const job1 = SecretAgent.getInstance();
// 执行任务
job1.doMission(); // 输出 "特工被创建了" "执行任务"
// 再次联系特工
const job2 = SecretAgent.getInstance();
// 执行任务
job2.doMission(); // 输出 执行任务
单例模式的主要优点
- 节省资源,单例模式通过共享一个实例,避免了每次创建对象时都进行初始化,从而节省了资源,提高性能
- 隐藏具体实现,单例模式将对象的创建过程隐藏在内部,从而提高了代码的可维护性和可读性。
单例模式的主要缺点
单例模式将对象的创建过程隐藏在内部,难以扩展与难以调试
单例模式的适用场景
需要隐藏内部实现,共享一个实例,并且需要节省资源,提高性能。
总结
单例模式是一种创建型设计模式,它在确保一个类只有一个实例,隐藏了内部实现,并提供一个全局访问点,从而节省资源,提高性能。
喜欢的话就点个赞 ❤️,关注一下吧,有问题也欢迎讨论指教。感谢大家!!!
下期预告:TypeScript 设计模式之【原型模式】