本文已参与「新人创作礼」活动,一起开启掘金创作之路。
对于前端而言,单例模式并不陌生,浏览器中的 window 就是最典型的单例模式。
举个例子: 单例模式 codesandbox
定义
一个类只允许创建一个对象(或者叫实例),那这个类就是一个单例类,这种设计模式就叫作单例设计模式,简称单例模式。
实现
class Singleton {
private static instance: Singleton;
private constructor() {}
public static getInstance(): Singleton {
if (!Singleton.instance) {
Singleton.instance = new Singleton();
}
return Singleton.instance;
}
public someBusinessLogic() {
// ...
}
}
function clientCode() {
const s1 = Singleton.getInstance();
const s2 = Singleton.getInstance();
if (s1 === s2) {
console.log("Singleton works, both variables contain the same instance.");
} else {
console.log("Singleton failed, variables contain different instances.");
}
}
clientCode();
应用场景
- 需要频繁实例化然后销毁的对象 (弹窗 dialog)
- 创建对象时耗时过多或耗资源过多,但又经常用到的对象。(window)
- 系统的配置信息或者用户信息 info config