【问题标题】:What are good candidates for singleton? [duplicate]什么是单身人士的好候选人? [复制]
【发布时间】:2011-08-31 10:25:11
【问题描述】:

可能重复:
On Design Patterns: When to use the Singleton?

嗨 只是想知道什么是单身人士的好候选人?

只是阅读它并想知道有时我是否误用了它。

一般来说,你什么时候会使用单例?

非常感谢

【问题讨论】:

标签: c# design-patterns


【解决方案1】:

基本上,每当我需要一个类但不确定是否需要单例模式时,我都会对单例接口进行编码,但让实现类确定是返回单个实例还是返回新实例。这样一来,调用类就不必担心是否应该向单例迁移(或从单例迁移)。

我成功使用它的地方在我的存储库中。但我总是在每个单例回答前加上“确保你注意线程安全,无论你走哪条路”。处理单例时,有时在多线程环境中会发生奇怪的事情。

【讨论】:

  • 如果构造函数有任何副作用,需要注意的另一件有趣的事情是使用“实例”属性来构造单例。如果您在调试器中碰巧将鼠标悬停在 Instance 属性上,则可能会触发单例构造的一些副作用,而无需实际设置实例字段,从而导致在您单步执行时重复调用副作用,并且很麻烦调试会话。
  • "每当我需要一个类但不确定是否需要单例模式时,我都会对单例接口进行编码,但让实现类决定是否返回单个实例或新实例":这违反了 YAGNI,绝对让我想起了 The mating call of the loser ;-)
  • ...(续)“当在两种架构之间进行选择时,有人说你应该给用户一个复选框来选择应该使用哪个。这是最终的懦弱答案。你可以不要在两种完全不同的方法之间做出决定,而不是选择一种,而是说“让我们两者都做!”,与仅选择一种或另一种相比,从而创造了三倍甚至四倍的工作。”
猜你喜欢
  • 2010-10-15
  • 2011-03-30
  • 1970-01-01
  • 2010-10-15
  • 1970-01-01
  • 1970-01-01
  • 2010-09-05
  • 1970-01-01
相关资源
最近更新 更多