我們可以在沒有getInstance()方法的情況下定義一個Singleton類嗎?我們可以在沒有getInstance()方法的情況下定義一個Singleton類嗎?
public class Singleton {
public static final Singleton singleton = new Singleton();
private Singleton(){
}
}
我們可以在沒有getInstance()方法的情況下定義一個Singleton類嗎?我們可以在沒有getInstance()方法的情況下定義一個Singleton類嗎?
public class Singleton {
public static final Singleton singleton = new Singleton();
private Singleton(){
}
}
您應該將只有一個實例的對象的概念與單例模式分開。你可以找到兩個here和here的討論。 TL; DR單實例是有用的,而使用單例模式是不好的。
在代碼中使用單實例對象的最好方法是通過ctor傳遞它。使用依賴注入框架更容易,但是也可以不使用。
class Something
{
private IMySingleInstance _single;
public Something(IMySingleInstance s)
{
_single = s;
}
}
如果你那樣做,你聲明依賴,實際上,你可以測試你的東西,如果需要的話嘲笑的單一實例,而所有與Singleton模式的問題。
我瞭解設計概念,但我有興趣通過不使用getInstance()方法來了解技術問題。 – user3082820
技術難點不在於getInstance,而是使用靜態。單實例/單實例使用靜態導致問題,應該避免。 – Wilbert
爲了什麼目的? 「在軟件工程中,單例模式是一種將類的實例化限制爲一個對象的設計模式」 - 只要符合定義,實現細節並不重要。 –
當然,你爲什麼要這麼做?它不再遵循Signleton設計模式。 –
由於OP似乎並不急於回答問題,所以投票結束,因爲不清楚。 –