问题标签 [singleton]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1555 浏览

ruby - 如何使用 Ruby 中的单例设计模式创建类?

单例模式是一种设计模式,用于将类的实例化限制为一个对象实例。虽然我知道如何在 C++ 和 Java 中编写单例模式,但我想知道是否有人知道如何在 Ruby 中实现它?

0 投票
9 回答
26328 浏览

c++ - C++ 中单例的线程安全惰性构造

有没有办法在 C++ 中实现单例对象:

  1. 以线程安全的方式懒惰地构造(两个线程可能同时是单例的第一个用户 - 它仍然应该只构造一次)。
  2. 不依赖于预先构造的静态变量(因此在构造静态变量期间单例对象本身可以安全使用)。

(我不太了解我的 C++,但是在执行任何代码之前是否初始化了整数和常量静态变量(即,甚至在执行静态构造函数之前 - 它们的值可能已经在程序中“初始化”了)图像)?如果是这样 - 也许可以利用它来实现单例互斥锁 - 这又可以用来保护真正单例的创建..)


太好了,看来我现在有几个很好的答案(很遗憾我不能将 2 或 3 标记为答案)。似乎有两种广泛的解决方案:

  1. 使用 POD 静态变量的静态初始化(与动态初始化相反),并使用内置原子指令实现我自己的互斥锁。这是我在问题中暗示的解决方案类型,我相信我已经知道了。
  2. 使用其他一些库函数,例如pthread_onceboost::call_once。这些我当然不知道 - 并且非常感谢发布的答案。
0 投票
10 回答
65902 浏览

c# - C# 静态构造函数线程安全吗?

换句话说,这个 Singleton 实现线程是否安全:

0 投票
23 回答
19369 浏览

language-agnostic - 单身人士:好的设计还是拐杖?

单例是一种备受争议的设计模式,所以我对 Stack Overflow 社区对它们的看法很感兴趣。

请为您的观点提供理由,而不仅仅是“单身人士适合懒惰的程序员!”

这是一篇关于这个问题的相当好的文章,虽然它反对使用单例: scientificninja.com:performant-singletons

有没有人有其他关于他们的好文章?也许支持单身人士?

0 投票
10 回答
7201 浏览

javascript - 有哪些使用 JavaScript 实现设计模式的示例?

我是使用 JavaScript 的中等熟练程序员,但我不是大师。我知道你可以用它做一些非常强大的事情,除了相当基本的 DOM 操作之外,我还没有看到太多东西。我想知道人们是否可以提供一些使用 JavaScript 的传统设计模式概念的示例,例如工厂方法、单例等。在什么情况下这些模式会在网络上使用?

0 投票
7 回答
26184 浏览

java - Java Singleton vs static - 有真正的性能优势吗?

我正在合并一个 CVS 分支,其中一个较大的变化是用具有静态初始化块和所有静态方法的抽象类替换单例模式。

这是值得保留的东西,因为它需要合并很多冲突,我会在什么样的情况下寻找这种重构是值得的?

我们在 Weblogic 8.1(所以 JDK 1.4.2)下运行这个应用程序


对不起托马斯,让我澄清一下..

HEAD 版本具有传统的单例模式(私有构造函数、getInstance() 等)

分支版本没有构造函数,是一个“公共抽象类”,并将对象上的所有方法修改为“静态”。曾经存在于私有构造函数中的代码被移动到一个静态块中。

然后更改该类的所有用法,这会导致合并中的多个冲突。

在少数情况下进行了此更改。

0 投票
21 回答
370963 浏览

python - 有没有一种简单、优雅的方式来定义单例?

似乎有很多方法可以在 Python中定义单例。对 Stack Overflow 是否有共识?

0 投票
5 回答
24614 浏览

java - 为不同的 JUnit 测试使用不同的类加载器?

我有一个 Singleton/Factory 对象,我想为其编写 JUnit 测试。Factory 方法根据类路径上的属性文件中的类名来决定要实例化哪个实现类。如果没有找到属性文件,或者属性文件不包含类名键,那么该类将实例化一个默认实现类。

由于工厂会在实例化后保留单例的静态实例以供使用,因此为了能够在工厂方法中测试“故障转移”逻辑,我需要在不同的类加载器中运行每个测试方法。

JUnit(或其他单元测试包)有什么方法可以做到这一点?

编辑:这是一些正在使用的工厂代码:

0 投票
9 回答
7351 浏览

c# - 单例成员的线程安全使用

我有一个多个类使用的 C# 单例类。Instance对方法的访问是Toggle()线程安全的吗?如果是,根据什么假设、规则等。如果不是,为什么以及如何解决?

0 投票
0 回答
124669 浏览

python - Python 和单例模式

可能重复:
是否有一种简单、优雅的方式在 Python 中定义单例?

在 Python 中实现单例模式的最佳方法是什么?似乎不可能像使用单例模式那样将构造函数声明为私有或受保护...