只有一个实例,全局可访问该实例
我们实现一个简单的单例模式,进行实例化的过程中我们先判断实例是否存在,如果不存在则new一个,存在那就返回该实例。多次调用都是返回同一个实例对象
let Singleton = function (name) {
this.name = name
// 用来判断实例是否已经创建
this.instance = null
}
Singleton.prototype.getName = function () {
console.log(this.name)
}
Singleton.getInstance = function (name) {
// 如果已经存在实例,则返回这个实例
if (this.instance) {
return this.instance
}
// 不存在则new一个,并且要保存到对应的instance中
return this.instance = new Singleton(name)
}
let yu = Singleton.getInstance('yujian')
let hua = Singleton.getInstance('hua')
yu.getName()
hua.getName()
结果为