我们可以在没有getInstance()方法的情况下定义Singleton类吗?

时间:2013-12-09 12:43:59

标签: singleton

我们可以在没有getInstance()方法的情况下定义Singleton类吗?

public class Singleton {
    public static final Singleton singleton = new Singleton();
    private Singleton(){    
    }
}

1 个答案:

答案 0 :(得分:0)

您应该将仅具有单个实例的对象的概念与单例模式分开。您可以找到关于两个herehere的讨论。 TL; DR单实例很有用,而使用单例模式则很糟糕。

在代码中使用单实例对象的最佳方法是通过ctor传递它。使用依赖注入框架更容易,但也可以不使用。

class Something
{
    private IMySingleInstance _single;

    public Something(IMySingleInstance s)
    {
        _single = s;
    }
}

如果您这样做,则声明依赖关系,并且您可以实际测试您的Something并在必要时模拟单个实例,而不会出现与单例模式相关的所有问题。