0

实现一个用静态方法包装实例方法的单例是否有弊端?

例如:

    public void DoStuff() { instance._DoStuff(); }
    private void _DoStuff() {

        ...
    }

当然实例是静态的。但最好打电话:

Singleton.DoStuff();

代替:

Singleton.GetInstance().DoStuff();
4

1 回答 1

0

我认为这取决于。

首先 GetInstance() 真的应该用于取回一个对象,然后在代码中的其他地方使用它。单例应该只是帮助保证该对象的单个实例存在。

接下来,如果您想让 DoStuff 静态化,尽管您必须知道在代码中的其他任何地方都以这种方式调用它。

所以你真的有这个区别:

var instance = Singleton.GetInstance();
...
instance.DoStuff ()

VS

Singleton.DoStuff ()

这意味着您可以传递一个单例对象,而不必知道静态调用。

另外,我不得不提一下,如果使用不当,单身人士可能会导致单元测试的噩梦:http: //misko.hevery.com/2008/08/25/root-cause-of-singletons/

于 2016-07-27T05:49:11.000 回答