Appearance
实现
javascript
const Singleton = function (name) {
this.name = name
}
Singleton.prototype.getName = function () {
console.log(this.name)
}
Singleton.getInstance = (function () {
let instance = null
return function (name) {
if (!instance) {
instance = new Singleton(name)
}
return instance
}
})()
const instance1 = Singleton.getInstance('foo')
const instance2 = Singleton.getInstance('bar')
instance1 === instance2 // output: true通过 Singleton.getInstance 来获取 Singleton 类的唯一实例,但使用者必须知道这是一个 单例类,增加了这个类的 ”不透明性“。