jack-zheng
9/18/2018 - 2:41 PM

singleton, pattern, java

singleton, pattern, java

Singleton

Static Class Impl

优点: 线程安全, 延时加载

缺点: 需要额外工作实现序列化, 还是可以通过反射创建对象

package singleton.staticclass;

public class Singleton {
        private Singleton() {
        System.out.println("Constructor Called");
    }

    private static class Holder {
        private static final Singleton INSTANCE = new Singleton();
    }

    public static final Singleton getInstance() {
        System.out.println("Get Instance Called");
        return Holder.INSTANCE;
    }
}

Enum Impl

优点: 线程安全, 支持序列化, 防止反射调用

package singleton.enumclass;

public enum Singleton {
    INSTANCE;
    private String name;
    public String getName(){
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}