【发布时间】:2012-09-27 03:47:37
【问题描述】:
可能重复:
What is so bad about Singletons?
我最近听说 Singleton 是一种反模式。我知道这与创建一个类单例就像使该唯一实例成为全局变量这一事实有关,但它的作用远不止于此(限制该对象的实例数量,管理实例化等)。
为什么 Singleton 被认为是一种反模式?还有什么替代方案?
【问题讨论】:
-
我知道 Singleton 被过度使用了——我见过人们在不应该使用它的情况下使用它——但这是我第一次听说它被称为反模式。从那时起,我一直在谷歌上搜索,发现很多人认为它是一种反模式,但我没有找到任何可接受的解释...... Dour High Arch:只需谷歌“单例反模式”和你会发现数百篇关于它的文章......但我找不到任何真正证明它的文章。这就是我在这里问的原因。
-
杜尔高拱门:没有重复。我确实找到了那个帖子。但它没有回答:“为什么 Singleton 被认为是反模式?还有哪些替代方案?” PS:GG删除你之前的评论。
-
如果您查看 Dour 的链接,在 cmets 中还有另一个指向 blog post 的链接,它确实很好地回答了问题的第一部分。此外,至于替代方案,另一篇 SO 帖子讨论了 DI(依赖注入)。如果这不能回答您的两个问题,您能否详细说明您在寻找什么?
标签: design-patterns anti-patterns