标签: singleton
我们可以在没有getInstance()方法的情况下定义Singleton类吗?
public class Singleton { public static final Singleton singleton = new Singleton(); private Singleton(){ } }
答案 0 :(得分:0)
您应该将仅具有单个实例的对象的概念与单例模式分开。您可以找到关于两个here和here的讨论。 TL; DR单实例很有用,而使用单例模式则很糟糕。
在代码中使用单实例对象的最佳方法是通过ctor传递它。使用依赖注入框架更容易,但也可以不使用。
class Something { private IMySingleInstance _single; public Something(IMySingleInstance s) { _single = s; } }
如果您这样做,则声明依赖关系,并且您可以实际测试您的Something并在必要时模拟单个实例,而不会出现与单例模式相关的所有问题。