概念描述
代码实现
- 实现原理是多次 new SingleTon 的时候,判断 SingleTon 实例是否存在(一般利用 SingleTon 的类静态属性表示)。
- 类实例存在,直接返回实例。
- 类实例不存在,就 new 一个新实例,保存在类静态变量上,并返回该新实例。
/**
* @description: 单例模式(SingleTon)
* @author: huen2015
*/
class SingleTon {
private static instance: SingleTon | null = null
public name: string = 'SingleTon'
constructor() { }
public static getInstance() {
if (SingleTon.instance == null) {
SingleTon.instance = new SingleTon()
}
return SingleTon.instance
}
}
const instance1 = SingleTon.getInstance()
const instance2 = SingleTon.getInstance()
console.log('instance1 === instance2', instance1 === instance2); // true
应用场景
-
Vue 中 Vue-Router、Vue-Vuex
- 实现原理是不让多次 new Vue-Router/Vue-Vuex 实例。
-
全局模态框
- 多次 new Model 返回同一实例。
-
ES6 import