Appearance
用代理实现单例模式
javascript
const createDiv = function (html) {
this.html = html
this.init()
}
createDiv.prototype.init = function () {
const div = document.createElement('div')
div.innerHTML = this.html
document.body.appendChild(div)
}
const ProxyCreateDiv = (function () {
let instance = null
return function (html) {
if (!instance) {
instance = new createDiv(html)
}
return instance
}
})()
const div1 = new ProxyCreateDiv('foo')
const div2 = new ProxyCreateDiv('bar')
div1 === div2 // output: true通过引入代理类的方式,我们同样完成了一个单例模式的编写,跟之前不同的是,现在我们把负责 管理单例的逻辑移到了代理类 ProxyCreateDiv 中。这样一来,CreateDiv 就变成了一个普通的 类,它跟 ProxyCreateDiv 组合起来可以达到单例模式的效果。