本文已参与「新人创作礼」活动,一起开启掘金创作之路。
对于前端而言,单例模式并不陌生,浏览器中的 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