为什么单身人士被认为是一种不好的做法?

时间:2009-03-24 18:52:56

标签: c# asp.net

重复:

  

What is so bad about Singletons?

我正在阅读this问题,并且惊讶地发现他认为单身人士被视为“不良行为”,并且实际上认为这是常识。

我在使用iBatis从XML加载查询的任何项目中都使用了单例。它极大地提高了这些情况下的速度。我不确定为什么你不会在这样的情况下使用它们。

所以......为什么他们不好?

5 个答案:

答案 0 :(得分:3)

它们不一定是坏的,只是被滥用和过度使用。人们似乎莫名其妙地被这种模式所吸引,并寻找新的和创造性的方式将其制作成应用程序,无论它是否真的适用。

答案 1 :(得分:3)

它们是一种工具,就像任何工具一样,有时候你应该使用它们,有时你应该使用别的东西。在这种情况下,通常情况下,其他东西(工厂,静态类)在乍一看似乎适合单身人士的情况下会更好。

Design Patterns出现时,似乎每个人都跳上了Singleton的潮流 - 他们到处都是,甚至是他们不应该去的地方。你现在看到的是(可能是当之无愧的)强烈抵制。并不是说你根本不应该使用它们,但是退一步看看所有可用的选项可能是一个好主意。

答案 2 :(得分:2)

单身人士一点也不差。事实上,它们在许多情况下非常有用。但他们确实有两个主要的滥用和/或失败的领域:

  • 单元可测试性
  • 多线程

两者都可以处理,但初学者经常忽略这样做(通常是通过无知),最终导致比他们知道如何处理更麻烦。

答案 3 :(得分:0)

它们不一定是坏的,它们往往被过度使用,并且在不需要时会被大量使用。

答案 4 :(得分:0)

与单元测试相比,它们通常被认为是不好的。

如果你有一个单例,这意味着你的一个或多个类在某些方法中的某个地方使用它。这是一个你在单元测试你的类时不能欺骗的依赖,因为类直接使用它而不通过它的构造函数或通过属性请求它。

这通常是人们说他们“坏”的原因。

此外,在一个多线程的应用程序中,很多人都严重执行它们,以至于有可能不止一次调用instanciation。