消除单身人士

Big*_*oyd 12 java singleton factory

我一直在做很多关于如何使用单例类在编程中成为不良实践的原因,因为隐藏的依赖性,难以测试等等.

我读过很多论坛帖子说你仍然可以维护单例的主要功能,只允许一个实例而不使用单例模式.

我想知道是否有人能给出一个实际的例子.很多帖子都建议使用工厂类来创建单例实例,其中清楚地显示了依赖关系.对我来说,这似乎只是采取多个单身人士并将它们组合成一个单一的工厂单身人士,这会产生同样的问题吗?

Mic*_*rdt 2

“单例模式”的问题实际上不在于单例本身,而在于单例类中不灵活的静态工厂方法。我相信即使在 GoF 书中,这也被认为是如何访问单例的示例,而不是最终的实现模型。

许多帖子建议使用工厂类来创建单例实例,其中清楚地显示了依赖关系。对我来说,这似乎就像将多个单例组合成一个工厂单例,这会产生相同的问题吗?

不同之处在于,这个单一工厂将成为您维护依赖关系的单一点。

事实上,普遍接受的解决方案是使用像SpringGuice这样的依赖注入框架,它基本上是一个具有非常强大和灵活的配置机制的单一工厂,它可以做的不仅仅是管理单例。