是否存在实现使用静态方法包装实例方法的单例的问题?
例如:
public void DoStuff() { instance._DoStuff(); }
private void _DoStuff() {
...
}
当然,实例将是静态的。但是打电话会更好:
Singleton.DoStuff();
而不是:
Singleton.GetInstance().DoStuff();
答案 0 :(得分:0)
我认为这取决于。
首先,GetInstance()确实应该用于获取对象,然后在代码中使用其他位置。 Singleton应该只是帮助保证该对象的单个实例存在。
接下来,如果你想让DoStuff静态继续,你必须知道在代码中的其他地方都这样称呼它。
所以你真的有这个区别:
var instance = Singleton.GetInstance();
...
instance.DoStuff ()
Vs的
Singleton.DoStuff ()
这意味着您可以传递单个对象,而不必知道静态调用。
此外,我必须提到单身人士如果使用不当会导致单元测试中的噩梦:http://misko.hevery.com/2008/08/25/root-cause-of-singletons/