问题标签 [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 投票
1 回答
635 浏览

.net - 你如何创建一个进程范围的单例对象?

我读到.Net中静态字段的粒度单位是每个AppDomain,而不是每个进程。是否可以创建一个进程范围的单例对象?

0 投票
29 回答
325453 浏览

java - 在 Java 中实现单例模式的有效方法是什么?

在 Java 中实现单例设计模式的有效方法是什么?

0 投票
24 回答
195276 浏览

c++ - 单例:应该如何使用

编辑:从另一个问题,我提供了一个答案,其中包含很多关于单身人士的问题/答案的链接:关于单身人士的更多信息:

所以我读过单例:好的设计还是拐杖?
争论仍在继续。

我将单例视为一种设计模式(好的和坏的)。

Singleton 的问题不在于模式,而在于用户(对不起大家)。每个人和他们的父亲都认为他们可以正确地实施一项(根据我所做的许多采访,大多数人都不能)。同样因为每个人都认为他们可以实现正确的单例,所以他们滥用模式并在不合适的情况下使用它(用单例替换全局变量!)。

因此,需要回答的主要问题是:

  • 什么时候应该使用单例
  • 如何正确实现单例

我对这篇文章的希望是,我们可以在一个地方(而不是必须谷歌和搜索多个站点)收集何时(以及如何)正确使用 Singleton 的权威来源。同样合适的是反使用列表和常见的错误实现,解释为什么它们无法工作以及好的实现它们的弱点。


所以开始吧:
我会举起手说这是我使用的,但可能有问题。
我喜欢“Scott Myers”在他的书“Effective C++”中对主题的处理

使用单例的好情况(不多):

  • 日志框架
  • 线程回收池

好的。让我们一起得到一些批评和其他实现。
:-)

0 投票
8 回答
4950 浏览

language-agnostic - 单例有什么问题?

不要在这个问题上浪费你的时间。跟进:单身人士有什么不好?


请随意在Singleton上抱怨。

单例使用不当可能会导致大量油漆。你在使用单例时遇到过什么样的问题?这种模式的常见误用是什么?


在深入研究 Corey 的回答后,我发现了一些关于这个主题的精彩文章。

0 投票
4 回答
338 浏览

c# - 更新对正在使用的成员变量的引用

我得到了这个单例缓存对象,它公开了一个 IEnumerable 属性,它只返回一个私有 IEnumerable 变量。

我的单例对象上有一个静态方法,用于更新此成员变量(存在于此缓存对象的单个“实例”实例上)。

假设某个线程当前正在迭代这个 IEnumerable 变量/属性,而我的缓存正在更新。我这样做是为了让缓存更新一个新的局部变量,最后将暴露的私有变量设置为指向这个新的局部变量。

我知道我只是在更新一个引用,而将另一个(旧)对象留在内存中等待 GC 拾取,但我的问题是 - 我不是 100% 确定设置新引用后会发生什么?另一个线程会突然遍历新对象还是通过 IEnumerable 接口传递的旧对象?如果它是一个正常的参考,我会说'不'。调用线程将在旧对象上运行,但我不确定 IEnumerable 是否也是这种情况?

这是剥离的类:

0 投票
9 回答
56579 浏览

php - 用于数据库连接的全局或单例?

在 PHP 中使用单例而不是全局进行数据库连接有什么好处?我觉得使用单例而不是全局会使代码变得不必要地复杂。

全球代码

单例代码

如果除了全局或单例之外还有更好的初始化数据库连接的方法,请提及并描述它相对于全局或单例的优势。

0 投票
4 回答
1949 浏览

actionscript-3 - 在 Actionscript 3 中实现单例模式类的最佳方法是什么?

由于 AS3 不允许私有构造函数,因此构造单例并保证构造函数不是通过“new”显式创建的唯一方法似乎是传递单个参数并检查它。

我听过两个建议,一个是检查调用者并确保它是静态 getInstance(),另一个是在同一个包命名空间中有一个私有/内部类。

传递给构造函数的私有对象似乎更可取,但看起来您不能在同一个包中拥有私有类。这是真的?更重要的是,这是实现单例的最佳方式吗?

0 投票
11 回答
2528 浏览

language-agnostic - 滥用单例类的最常见示例

什么时候不应该使用单例类,尽管这样做可能很诱人?如果我们有一份我们应该注意避免的最常见的“单项炎”实例列表,那就太好了。

0 投票
36 回答
574384 浏览

design-patterns - 单例模式的缺点或缺点是什么?

例模式GoF模式手册中完全付费的成员,但它最近似乎被开发人员世界孤立了。我仍然使用相当多的单例,特别是对于工厂类,虽然你必须对多线程问题(实际上就像任何类)有点小心,但我不明白为什么它们如此糟糕。

Stack Overflow 似乎特别假设每个人都同意单身人士是邪恶的。为什么?

请用“事实、参考资料或特定专业知识”来支持您的回答

0 投票
4 回答
452 浏览

design-patterns - 社区何时认为使用单例是合适的?

可能重复:
单例:应该如何使用

继 Ewan Makepeace 之前关于单例模式的出色问题之后,我想我会问“社区何时认为使用单例是合适的?”

让我举一个例子来批评:

我有一个“IconManager”单身人士。它首先读取一个属性文件,该文件指示我的图标在磁盘上的位置,然后读取所有图标并缓存它们以供将来使用。

这些图标可以在我的整个 UI 中使用(选项卡、表格、框架等)......因此通过静态 Singleton 方法访问它们非常方便。我还想确保只读取一次图标(如果每次我需要从磁盘读取它们会很慢)社区是否认为这是对单例的适当使用?如果没有,它还能如何实施?

单身人士还有哪些其他有效用途?