【问题标题】:In what situation do we need to implement singleton class in javsacript [duplicate]在什么情况下我们需要在javascript中实现单例类[重复]
【发布时间】:2015-05-14 15:53:14
【问题描述】:

在什么场景下我们需要在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));  
}

【问题讨论】:

  • 何时需要一个实例?
  • 控制在其环境中需要或应该是唯一的任何资源。例如。库、覆盖的绘图画布、特定的解析器 ...

标签: javascript


【解决方案1】:

单例模式是一种将类的实例化限制为一个对象的设计模式。当需要一个对象来协调整个系统的动作时,这很有用。这个概念有时被推广到当只有一个对象存在时运行效率更高的系统,或者将实例化限制为一定数量的对象。该术语来自单例的数学概念。

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

var Singleton = {};

我们从这个实施中得到什么好处:

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

【讨论】:

  • 非常感谢您的详细解答
  • "它允许你用一些参数初始化单例。" 没有什么意义。如果它是一个单例,那么只有一种有效的方法来初始化它,所以你只需对其进行硬编码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-04-08
  • 2014-11-14
  • 1970-01-01
  • 2011-07-12
  • 2013-02-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多