在什么情况下我们需要在javascript中实现singleton类

时间:2015-03-12 13:07:27

标签: javascript

在什么情况下我们需要在javascript中实现Singleton Class,如下所示

var Singleton = (function () {
    var instance;

    function createInstance() {
        var object = new Object("I am the instance");
        return object;
    }

    return {
        getInstance: function () {
            if (!instance) {
                instance = createInstance();
            }
            return instance;
        }
    };
})();

function run() {

    var instance1 = Singleton.getInstance();
    var instance2 = Singleton.getInstance();

    alert("Same instance? " + (instance1 === instance2));  
}

1 个答案:

答案 0 :(得分:0)

单例模式是一种设计模式,它将类的实例化限制为一个对象。当需要一个对象来协调整个系统的操作时,这非常有用。该概念有时被推广到当仅存在一个对象时更有效地操作的系统,或者将实例化限制为特定数量的对象的系统。该术语来自单身人士的数学概念。

JavaScript中最简单的单例实现是:

var Singleton = {};

我们从此实施中获得了哪些好处:

  1. 它只实例化一个对象
  2. 它是安全的 - 它保留对变量内单例的引用,该变量位于词法闭包内,外部世界无法访问
  3. 它允许您使用一些参数初始化单例。包装单例的模块模式不知道初始化参数 - 它只是使用apply
  4. 转发调用
  5. 您可以使用instanceof运算符