2013-12-09 14 views
0

我們可以在沒有getInstance()方法的情況下定義一個Singleton類嗎?我們可以在沒有getInstance()方法的情況下定義一個Singleton類嗎?

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

爲了什麼目的? 「在軟件工程中,單例模式是一種將類的實例化限制爲一個對象的設計模式」 - 只要符合定義,實現細節並不重要。 –

+0

當然,你爲什麼要這麼做?它不再遵循Signleton設計模式。 –

+0

由於OP似乎並不急於回答問題,所以投票結束,因爲不清楚。 –

回答

0

您應該將只有一個實例的對象的概念與單例模式分開。你可以找到兩個herehere的討論。 TL; DR單實例是有用的,而使用單例模式是不好的。

在代碼中使用單實例對象的最好方法是通過ctor傳遞它。使用依賴注入框架更容易,但是也可以不使用。

class Something 
{ 
    private IMySingleInstance _single; 

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

如果你那樣做,你聲明依賴,實際上,你可以測試你的東西,如果需要的話嘲笑的單一實例,而所有與Singleton模式的問題。

+0

我瞭解設計概念,但我有興趣通過不使用getInstance()方法來了解技術問題。 – user3082820

+0

技術難點不在於getInstance,而是使用靜態。單實例/單實例使用靜態導致問題,應該避免。 – Wilbert

相關問題