2016-07-27 89 views
0

是否有一個實現一個包含實例方法的單例的靜態方法?在靜態方法中包裝單例實例方法是不好的?

例如:

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

     ... 
    } 

當然實例,並會是靜態的。但是,這將是更好打電話:

Singleton.DoStuff(); 

相反的:

Singleton.GetInstance().DoStuff(); 

回答

0

我認爲這取決於。

首先GetInstance()真的應該用於獲取對象,然後在代碼中使用其他位置。 Singleton應該幫助確保存在該對象的單個實例。

接下來,如果您想使DoStuff靜態前進,儘管您必須知道在代碼中的其他位置調用此方法。

所以,你真的有這種差異:

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

Vs的

Singleton.DoStuff() 

這意味着你可以通過周圍單身的對象,而不必知道靜態調用。

另外,我不得不提的是單身,如果使用得當沒有可能導致噩夢在單元測試:http://misko.hevery.com/2008/08/25/root-cause-of-singletons/

+0

啊,所以只要我實現它正確,它的好。謝謝! – sk84z

+0

是的,我認爲這是準確的。雖然我會小心地在每個地方放一堆靜態調用。如果沒有它們,它更容易做依賴注入 - 如果你曾經那樣做過。我建議調查。 – jcfore21

+0

我對依賴注入有一個非常基本的理解,說實話..我會研究那個!這也是爲了指出這一點。 – sk84z

相關問題