2014-11-03 49 views
2

我已经阅读了大量关于网络和堆栈的讨论,声称单身人士是邪恶的。 像: root-cause-of-singletonsWhy is Singleton considered an anti-pattern?Java Spring服务是单身吗?

我读到这样的评论“单身使代码复杂,疼痛重用和测试”。 我使用的是具有无状态单例的Spring服务的代码,我无法看到这些点在这里如何保存。

这样的服务是否也被认定为不好的做法,为什么?或者所有的辩论都只限于有状态的单身人士?

+1

邪恶只与有状态的单身人士 – ControlAltDel 2014-11-03 17:59:53

+0

@ControlAltDel我不明白为什么这个问题是“主要是基于意见”。正如Marko所回答的那样,我指出的辩论显然是单身模式,并且与Spring的单身人士没有关系。 – tunetopj 2014-11-04 19:00:45

回答

5

你与Singleton设计模式,其患有的问题,谈到你提及物质混淆Spring的单身人士(普遍好事)。

Singleton模式假定存在引用单例对象的全局变量static。它通常还会假定用于管理单例生命周期的许多样板代码(例如,懒惰地初始化它)。

Spring既不会让您实现Singleton模式,也不会在内部使用它。 Spring单例是通过声明创建的,并将它们连接在一起形成完整的对象图,包括循环依赖关系的解析。

3

(注释为答案可读性。)

单身本质上并没有邪恶,他们只是很容​​易误用。

如果你是不管理对象的单身性问题,甚至没有问题。

我不同意其他有关单身人士的状态;虽然它可以做错,但有许多单身模式的状态工作得很好,例如一个池。

2

春天的单身汉是有罪的,如果它是有状态的。无状态单是细:

  • 没有场,
  • 无国籍字段(例如数据源),在启动时进行初始化。