单例模式

2020-05-26  本文已影响0人  Hao_38b9

单例模式

DCL懒汉式

public class LazyMode {
    private static volatile LazyMode LAZYMODE;
    private LazyMode(){
    }
    public static LazyMode getInstance(){
        if(LAZYMODE==null){
            synchronized (LazyMode.class){
                if(LAZYMODE==null){
                    LAZYMODE = new LazyMode();
                }
            }
        }
        return LAZYMODE;
    }
    public static void main(String[] args) {
        LazyMode.getInstance();
    }
}

以上这种模式并不能防止通过反射来创建对象。

如何解决呢?可以采用枚举

public enum SingleEnum {
    SINGLE_ENUM;
    public static SingleEnum getInstance(){
        return SINGLE_ENUM;
    }

    public static void main(String[] args) {
        SingleEnum.getInstance();
    }
}
上一篇 下一篇

猜你喜欢

热点阅读