JS设计模式之---单例模式

时间:2024-04-07 16:33:37
  • 单例模式是保证一个类仅有一个实例,并提供一个访问它的全局访问点。
  • 单例模式在现在面向对象的语言Java,C#,C++等等中也有很多用到,其实它在Javascript中使用同样非常广泛。
var CreateDiv = function (html) {
this.html = html;
this.init();
};
CreateDiv.prototype.init = function () {
var div = document.createElement('div');
div.innerHTML = this.html;
document.body.appendChild(div);
};
var ProxySingletonCreateDiv = (function () {
var instance;
return function (html) {
if (!instance) {
instance = new CreateDiv(html);
}
return instance;
};
})();
var a = new ProxySingletonCreateDiv('test1');
var b = new ProxySingletonCreateDiv('test2');
console.log(a===b);//true 页面只会创建 test1
  • 我们继续抽离代码,使之更为通用
 var getSingle = function (fn) {
var result;
return function () {
return result ||(result=fn.apply(this, arguments));
}
};
  • 我们把生成单例的逻辑抽离出来,将函数作为一个变量参数进行传入,这样以后只需要新建对应的函数就好,这段代码就完全通用了,这个跟Jquery 中one 函数类似。