单例模式的定义
定义:保证一个类仅有一个实例,并提供一个可以全局访问他的方法
在JavaScript中与传统的单例模式稍有不同,后面会具体讲解
特点:
- 单例类只能有一个实例
- 单例类必须自己创建自己的唯一实例
- 单例类必须给所有其他的对象提供这一实例
实现思路:判断系统是否已经含有这个实例,如果有则返回,如果没有则创建
优点:
1.在内存里只有一个实例,减少内存的开销,尤其是频繁的创建和销毁实例
2.避免对资源的多重占用
缺点:没有接口,不能继承,与单一职责原则冲突,一个类应该只关心内部逻辑,而不关心外面怎么样来实例化
应用场景:
- 要求生产唯一序列号
- WEB中的计数器,不用每次刷新都在数据库里面加一次,用单例先缓存起来
- 创建一个对象需要消耗的资源过多,比如I/O与数据库的连接等
单例的实现
Java 实现
1 | public class SingleObject { |
JavaScript 实现
1 | // es5 |
1 | // es6 |
应用示例:实现一个单例弹窗
1 |
|