Appearance
透明的单例模式
javascript
const CreateDiv = (function () {
let instance = null
return function (html) {
if (instance) {
return instance
}
this.html = html
this.init()
return instance = this
}
})()
createDiv.prototype.init = function () {
const div = document.createElement('div')
div.innerHTML = this.html
document.body.appendChild(div)
}
const div1 = new CreateDiv('foo')
const div2 = new CreateDiv('bar')
div1 === div2 // output: true构造函数 CreateDiv 做了两件事。第一是创建对象和执行初始化 init 方法,第二是保证只有 一个对象,违反了”单一职责原则“,加入某天需要利用这个类创建多个 div,即要让这个类从 单例类变成多例类,就需要改写构造函数 CreateDiv,会给我们带来不必要的麻烦。