[英]create 2 instances of a singleton class Java
我知道這個問題很奇怪,但我只是想知道:有沒有辦法在Java中創建Singleton類的多個實例?
我的情況是這樣的:
我有一個Singleton類,並且我需要該類的2個對象/實例。 有什么方法可以修改類以創建多個實例?
我的課:
public class SingletonClass {
private static SingletonClass sSoleInstance;
//private constructor.
private SingletonClass(){
//Prevent form the reflection api.
if (sSoleInstance != null){
throw new RuntimeException("Use getInstance() method to get the single instance of this class.");
}
}
public static SingletonClass getInstance(){
if (sSoleInstance == null){ //if there is no instance available... create new one
sSoleInstance = new SingletonClass();
}
return sSoleInstance;
}
}
可以使用枚舉模式創建單例。 喜歡
public enum Whatever {
INSTANCE;
}
將其變成Bi-Singleton就像:
public enum Whatever {
INSTANCE, YETANOTHER
}
記錄一下:我剛寫了“ bi-singleton”一詞; 從概念上講,這幾乎意味着0。 如果您需要多個實例,則它不是單例。 期。 因此,您的問題聽起來更像是XY問題。
請注意:考慮使用該枚舉解決方案; 因為默認情況下它是線程安全的; 您正在使用的代碼不是。 但是在進行更改之前,請進行一些研究以了解這些方法的利弊。
具有有效用例的絕對有效問題-簡而言之,當使用靜態工廠方法時,您可以具有一個帶有私有構造函數的類的多個實例。 通過使構造函數私有化,可以確保您的類不能從外界實例化,但是與此同時,所討論的類可以根據需要多次實例化自身。
請查看本文以獲取詳細信息和代碼示例。 希望能有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.