单例模式有啥缺点吗? [复制]

Posted

技术标签:

【中文标题】单例模式有啥缺点吗? [复制]【英文标题】:Are there any downsides to the singleton pattern? [duplicate]单例模式有什么缺点吗? [复制] 【发布时间】:2011-01-21 13:43:05 【问题描述】:

可能的重复:What is so bad about SingletonsProblems with Singleton Pattern

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

恕我直言,这是关于用法的问题,模式本身没有任何问题

【问题讨论】:

阅读这里***.com/questions/137975/… 模式没有问题。但它可能是在不合适时被滥用最多的模式。 拥有重复的***.com/questions/1448393/… 和***.com/questions/1392315/… 您应该检查是否已经回答了这个问题....当您使用关键字输入问题时,SO 会通知您可能与关键字匹配的问题),在继续之前先检查那里.... 我不喜欢当它放回冰箱时,它总是把盖子从蛋黄酱罐上取下来。浴室地板上的毛巾是怎么回事? 【参考方案1】:

来自Wikipedia:

有些人认为它是一种反模式, 判断它被过度使用, 引入了不必要的限制 一个唯一实例的情况 类实际上不是必需的,并且 将全局状态引入 应用。

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

【讨论】:

【参考方案2】:

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

您总是需要一个互斥锁(或同步块)来保护初始 getInstance() 调用,这在某些情况下可能会出现问题。 隐藏您正在创建全局变量的事实是一种技巧,而全局变量通常不好。但是,在许多情况下,它们带来的简单性是可观的,但请注意不要滥用它们。

【讨论】:

【参考方案3】:
    不可测试或至少很难测试 很难找到依赖类 不允许子类化 ...

【讨论】:

以上是关于单例模式有啥缺点吗? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

单例模式,你真的写对了吗?

设计模式系列-你真的了解单例模式吗??

单例模式的优缺点

面试官所认为的单例模式

单例模式的长处-缺点

单例模式的三种实现 以及各自的优缺点