首页 > 代码库 > javascript 设计模式1----单例模式

javascript 设计模式1----单例模式

定义:保证一个类仅有一个实例,并提供一个访问的全局接口:

就是收:当我们 var a = new a(); var a1 = new a()是;a与a1是相等的。怎么实现呢,就是第一次实例化。第二不在实例,只是返回第一次的实例化:

附上通用的惰性单例思路:

Singleton.getInstance = (function () {    var instance = null;    return function (name) {        if( !instance){            instance = new Singleton(name);        }        return instance;    }})()

  一个书上的登录框的例子:

var createLoginLayer = (function () {    var div;    return function () {        if(!div){            div = document.createElement(div);            div.innerHTML = 我是登录;            div.style.display = none;            document.body.appendChild(div);        }        return div;    }})()    document.getElementById(div1).onclick = function () {        var loginLayer = createLoginLayer();        loginLayer.style.display = block;    }

通用的惰性单例:

var getSingle = function (fn) {    var result;    return function () {        return result || (result = fn.apply( this,arguments));    }}var createLoginLayer = function () {    var div = document.createElement(div);    div.innerHTML = WOSHI DENGLU;    div.style.display = none;    document.body.appendChild(div);    return div;}var createSingleLoginLayer = getSingle(createLoginLayer);    document.getElementById(div1).onclick = function () {        var loginLayer = createSingleLoginLayer();        loginLayer.style.display = block;    }    //在创建一个唯一的iframe    var createSingleframe = getSingle(function () {        var iframe = document.createElement(iframe);        document.body.appendChild(iframe);        return iframe;    })    document.getElementById(div1).onclick = function () {        var loginLayer = createSingleframe();        loginLayer.src = http://baidu.com    }

 

javascript 设计模式1----单例模式