Javascript 为什么我们使用单例类?

Javascript 为什么我们使用单例类?,javascript,loops,design-patterns,Javascript,Loops,Design Patterns,我不熟悉OOPs的概念。我已经听懂了单身班。但是,有人能帮我理解singleton类的用法吗 我们可以说这是javascript中的一个单例类吗 var user = { firstName: 'John', lastName: 'Doe', sayName: function() { return this.firstName + ' ' + this.lastName; } }; 当一个类必须只有一个实例,并且客户端必须可以从全局访问点访

我不熟悉OOPs的概念。我已经听懂了单身班。但是,有人能帮我理解singleton类的用法吗

我们可以说这是javascript中的一个单例类吗

var user = {  
    firstName: 'John',
    lastName: 'Doe',
    sayName: function() {
        return this.firstName + ' ' + this.lastName;
    }
};

当一个类必须只有一个实例,并且客户端必须可以从全局访问点访问该类时,应该使用
singleton
模式

示例不多

Logger Classes
单例模式用于记录器类的设计。这些类通常作为一个单例实现,并在所有方面提供一个全局日志记录访问点 应用程序组件,无需在每次执行日志记录操作时创建对象

Configuration Classes
Singleton模式用于设计为应用程序提供配置设置的类。通过将配置类实现为单例,我们不仅提供了一个全局访问点

有很多例子


我们应该抵制自己使用它,直到并且除非由于多线程环境中结果的不可预测性而对它有强烈的需求。

这一定是某种东西的复制品,但是单例类的特点是构造函数是私有的,并且只能实例化一次。当您希望在程序的某个点上只有一个对象实例时,单例是有意义的。搜索一下,你会发现很多东西。乔恩·斯基特有一个以他的名字命名的单身汉。一般来说,你不应该对单身汉感到太舒服。尽量不要使用它们。最重要的是问我们为什么不使用单例。很容易理解为什么不将“logger”或“config”设置为单例。这个问题可能更适合google。在带有Meyer单例的C++11中,许多线程问题都被消除了。