Open zlx362211854 opened 4 years ago
单例模式是软件设计模式中的一种,最大的作用就是通过单例模式可以保证系统中一个类只有一个实例,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。举个例子: 我们在全局创建了一个生成config的方法,便于在其他地方使用
function Config(){
// 如果已存在实例,则直接返回实例
if(typeof Config.instance === 'object'){
return Config.instance
}
// 实例属性
this.config = {
baseUrl: 'xxx',
proxy: 'xxx'
}
//不存在实例则创建实例
Config.instance =this
return this
}
window.Config = Config
var c1 = new Config()
var c2 = new Config()
console.log(c1, c2, c1 === c2)
// true
这个时候,Config方法只会 生成一个实例,这样即便我们在全局有很多地方new了Config方法,也只会生成一个实例,这样保证了数据的一致性,也减少了资源的浪费。
单例模式是为了避免类被多次实例化,只允许被实例化一次。
以 jQuery 为例,当你引人 $ 时会为你创建一个实例并返回,当你第二次引入 $,会检测实例化对象是否存在,如果存在就返回给你相同的实例,简单实现如下:
Reference
Singleton