我已经阅读了一些关于网络和堆栈的讨论,声称单身人士是邪恶的。 喜欢: root-cause-of-singletons 和Why is Singleton considered an anti-pattern?
我读过像“单身人士使代码变得复杂,重用和测试的痛苦”之类的评论。 我使用Spring Services作为无状态单例的代码,我无法看到这些点是如何存在的。
此类服务是否也符合不良做法的原因?为什么?或者所有辩论都只针对有状态的单身人士?
答案 0 :(得分:5)
你已经将Spring的单身人士(普遍好事)与 Singleton设计模式混淆了,后者会受到你所引用材料中所讨论的问题的困扰。
Singleton模式假设存在一个引用单例对象的static
全局变量。它通常还假设有许多样板代码用于管理单例的生命周期(例如,懒惰地初始化它)。
Spring既不会让你实现Singleton模式,也不会在内部使用它。 Spring单例是以声明方式创建的,并连接成完整的对象图,包括循环依赖的解析。
答案 1 :(得分:3)
(评论为可读性的答案。)
单身人士本身并不邪恶,他们只是容易误用。
如果你没有管理对象的单身,那么问题就更少了。
我不同意其他有关国家单身人士的观点;虽然它可以做错,但是有很多单例模式的状态可以很好地工作,例如池。
答案 2 :(得分:2)
Spring Singleton如果有状态则是邪恶的。一个无国籍的单身人士很好: