单件模式Singletons有什么缺点吗?

Are there any downsides to the singleton pattern?

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicates:
What is so bad about Singletons
Problems with Singleton Pattern

单件模式有什么缺点吗?我听说这是一个面试问题,我不明白这是什么意思。

imho,这是关于用法的,模式本身没有任何问题。


维基百科:

Some consider it an anti-pattern,
judging that it is overused,
introduces unnecessary limitations in
situations where a sole instance of a
class is not actually required, and
introduces global state into an
application.

就我个人而言,自从我开始使用Spring自动连接我的应用程序以来,我从来没有必要写一个单例。


这是一个非常普通的问题,它实际上取决于您的用例。我将引用以下内容:

  • 您总是需要一个互斥体(或同步块)来保护初始的getInstance()调用,这在某些情况下可能有问题。
  • 隐藏正在创建全局变量这一事实是一种黑客行为,而全局变量通常是坏的。然而,在许多情况下,他们带来的简单是可以理解的,但注意不要滥用他们。


  • 不可测试,或者至少很难测试
  • 很难找到从属类
  • 不允许子类化