簡體   English   中英

創建2個單例類Java實例

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM