实现一个用静态方法包装实例方法的单例是否有弊端?
例如:
public void DoStuff() { instance._DoStuff(); }
private void _DoStuff() {
...
}
当然实例是静态的。但最好打电话:
Singleton.DoStuff();
代替:
Singleton.GetInstance().DoStuff();
实现一个用静态方法包装实例方法的单例是否有弊端?
例如:
public void DoStuff() { instance._DoStuff(); }
private void _DoStuff() {
...
}
当然实例是静态的。但最好打电话:
Singleton.DoStuff();
代替:
Singleton.GetInstance().DoStuff();
我认为这取决于。
首先 GetInstance() 真的应该用于取回一个对象,然后在代码中的其他地方使用它。单例应该只是帮助保证该对象的单个实例存在。
接下来,如果您想让 DoStuff 静态化,尽管您必须知道在代码中的其他任何地方都以这种方式调用它。
所以你真的有这个区别:
var instance = Singleton.GetInstance();
...
instance.DoStuff ()
VS
Singleton.DoStuff ()
这意味着您可以传递一个单例对象,而不必知道静态调用。
另外,我不得不提一下,如果使用不当,单身人士可能会导致单元测试的噩梦:http: //misko.hevery.com/2008/08/25/root-cause-of-singletons/