2

看了许多写设计模式的各类文章,发现大佬们仅仅是讲述各种设计模式的原理、特征、实现方式,但是对于其应用却只字不提,所以打算就自己掌握的知识,浅讲一下各种设计模式的实际应用场景。

关于单例模式

本文要说的是 单例模式百度百科 的描述是通过单例模式的方法创建的类在当前进程中只有一个实例
在ES6 出现之前, JS 的类不是一个很强的概念,而 JS 通常只在一个线程里运行,所以百科的描述对 JS 的单例而言,并不准确。
JS 的单例应该视作初始化后不被修改的变量,如此看来,其实单例模式是 JS 里应用最广泛的设计模式使用 CDN 引入的所有库文件的入口都是单例,比如大名鼎鼎的 jQuery
所以那些将讲设计模式的文章提到的各种单例模式的实现,基本都是画蛇添足,让许多前端人一头雾水。

单例模式的应用

单例模式的应用场景有两种:

  1. 需要对页面资源进行统一调度。最典型的就是弹窗,单个弹窗当然没问题,但如果用户还没看清第一个弹窗的时候,第二个弹窗又来了,两个弹窗不管是覆盖还是叠加,体验都是极为糟糕的,这种时候就应该将所有弹窗放到一个单例下进行管理。
  2. 需要复用对象以节约资源。比如使用 webSocket 与后台通信的时候。webSocket 虽然使用方便,但是多个 webSocket 连接会占用大量的服务端资源,因此,一个页面内绝对不能初始化多个接口相同的 webSocket。最好的实现是:同一个浏览器内不管有多少页面,都共享同一个连接,不过,维持连接的页面关闭的时候,其他页面需要及时发起新的连接来保持通信,这样的功能需要后端的支持才能达到。

君迹我心
5.1k 声望44 粉丝

WEB前端,懂点皮毛。