在啥情况下我们需要在javascript中实现单例类[重复]

Posted

技术标签:

【中文标题】在啥情况下我们需要在javascript中实现单例类[重复]【英文标题】: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));  

【问题讨论】:

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

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

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

var Singleton = ;

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

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

【讨论】:

非常感谢您的详细解答 "它允许你用一些参数初始化单例。" 没有什么意义。如果它是一个单例,那么只有一种有效的方法来初始化它,所以你只需对其进行硬编码。

以上是关于在啥情况下我们需要在javascript中实现单例类[重复]的主要内容,如果未能解决你的问题,请参考以下文章

在 Java 中实现单例模式的有效方法是啥? [关闭]

python中实现单例模式

如何在 Swift 中实现单例类

如何使用工厂构造函数在 Dart 中实现单例模式?

在控制台应用程序 C# 中实现单例的最佳方法?

线程安全在Java中实现单例模式的有效方法? [复制]