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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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----单例模式的主要内容,如果未能解决你的问题,请参考以下文章

设计模式1-单例模式的8种实现

JavaScript设计模式-7.单例模式

从ES6重新认识JavaScript设计模式: 单例模式

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

学习笔记Spring中常用的设计模式

单例模式 | 程序员都想要探索的 Javascript 设计模式