且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

java - 关于单例模式

更新时间:2023-12-03 13:37:22

@k袁_cn 分析得很清楚。

但是如果要对存在序列化传输的要求的话,这个就有问题了,因为一个已经序列化的对象,反序列化的时候会重新生成一个对象。(违法了单例)

public class Singleton implements Serializable{

    private static Singleton singleton;

    private Singleton(){
    }

    public static Singleton getInstance() {
        if (null == singleton) {
            synchronized (Singleton.class) {
                if(null == singleton)
                    singleton = new Singleton();
            }
        }
        return singleton;
    }
    private Object readResolve() {   
        return INSTANCE;
    }   
}

上面的代码变得好复杂,所以***的单例是采用枚举实现。


public enum Singleton{
    INSTANCE;
    public Singleton getInstance(){
        return Singleton.INSTANCE;
    }
}