【问题标题】:Is Singleton an Anti-pattern?单例是反模式吗?
【发布时间】:2012-09-17 07:57:04
【问题描述】:

单例是反模式吗?如果是,那么Spring中的依赖注入也是反模式(因为Spring提升了默认的Singleton bean)?

【问题讨论】:

标签: spring singleton anti-patterns


【解决方案1】:

硬编码单例和使用 Spring 创建单例 bean 之间有一个重要区别:后者只是配置。

因此,Spring 不会阻止可测试性:它是一个将 bean 用作单例的单个用例。您可以通过在测试中手动实例化它或用相同接口的模拟实现替换它来轻松使用相同的 spring。

如果你将一个类编码为一个单例,那么你不能轻易地替换它,而不重写它。测试只是您可能想要替换它的一个示例。如果您意识到您需要该 bean 的两个不同实例,那么您也会被硬编码的单例所困。

【讨论】:

    【解决方案2】:

    Singleton 模式不是反模式,它是一种限制实例数量的模式 对于一个对象。

    但是滥用单例来提供全局实例是一种反模式。

    对于您问题的春季部分,请参阅 Joachim Sauer 的回答。

    【讨论】:

      猜你喜欢
      • 2012-08-18
      • 2013-11-08
      • 1970-01-01
      • 2012-06-22
      • 2018-03-27
      • 2011-08-04
      • 2010-11-04
      • 2023-03-11
      相关资源
      最近更新 更多