How to instantiate a Singleton multiple times?

后端 未结 9 1874
醉酒成梦
醉酒成梦 2020-12-19 04:08

I need a singleton in my code. I implemented it in Java and it works well. The reason I did it, is to ensure that in a mulitple environment, there is only one instance of th

相关标签:
9条回答
  • 2020-12-19 04:56

    You may keep a key on a map and populate instance with key

    public class MultiSingleton {
    /**** Non-static Global Variables ***/
    String status = "";
    private BaseSmartCard bsc;
    /***********************************/
    private static Object lockObject = new Object();
    private String serialNo;
    
    private static Map<String, MultiSingleton> mappedObjects = new TreeMap<String, MultiSingleton>();
    
    protected MultiSingleton() {
    
    }
    
    
    public static MultiSingleton getInstance(String serialNo,long slotNo){
        if (mappedObjects.isEmpty() || !mappedObjects.containsKey(serialNo)) {
            MultiSingleton instance = new MultiSingleton();
            instance.setSerialNo(serialNo);
            mappedObjects.put(serialNo, instance);
            return instance;
        } else if (mappedObjects.containsKey(serialNo)) {
            return mappedObjects.get(serialNo);
        }else {
            return null;
        }
    }
    
    0 讨论(0)
  • 2020-12-19 04:58

    The point of a Singleton is that you can only instantiate it once.

    0 讨论(0)
  • 2020-12-19 05:00

    Singleton ston=Singleton.getInstance(); will return singleton object. By making use of "ston" object, if we call the method createNewSingleTonInstance() which is written in Singleton class will give new instance.

    public class Singleton {
    
    private String userName;
    private String Password;
    private static Singleton firstInstance=null;
    private Singleton(){}
    
    
    public static synchronized Singleton getInstance(){
        if(firstInstance==null){
            firstInstance=new Singleton();
            firstInstance.setUserName("Prathap");
            firstInstance.setPassword("Mandya");
        }
        return firstInstance;
    }
    
    
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public String getUserName() {
        return userName;
    }
    public void setPassword(String password) {
        Password = password;
    }
    public String getPassword() {
        return Password;
    }
    
    public Singleton createNewSingleTonInstance(){
        Singleton s=new Singleton();
        s.setUserName("ASDF");
        s.setPassword("QWER");
        return s;
    }
    }
    
    0 讨论(0)
提交回复
热议问题