我一直在阅读大量有关使用单例类如何由于隐藏的依赖关系、难以测试等原因而成为编程中的不良做法的文章。
我读过的很多论坛帖子都说你仍然可以保持单例的主要功能,即只允许一个实例而不使用单例模式。
我想知道是否有人可以举一个实际的例子。许多帖子都建议使用工厂类来创建清楚显示依赖关系的单例实例。对我来说,这似乎就像采用多个单例并将它们组合成一个单一的工厂单例,这会遇到同样的问题吗?
最佳答案
“单例模式”的问题其实不在于单例本身,而在于单例类中不灵活的静态工厂方法。而且我相信即使在 GoF 书中,这也被认为是如何访问单例的示例,而不是最终的实现模型。
A lot of posts have suggested using a factory class to create singleton instances where the dependencies are clearly shown. To me this just seems like taking multiple singletons and combining them into a single factory singleton which would have the same problems?
不同之处在于,这个单一工厂随后成为您维护依赖关系的单一点。
事实上,普遍接受的解决方案是使用像Spring 这样的依赖注入(inject)框架。或 Guice它基本上就是这样一个具有非常强大和灵活的配置机制的单一工厂,它可以做的不仅仅是管理单例。
关于java - 消除单例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9162443/