Java知识

单例模式

2020-07-13  本文已影响0人  淡季的风

内部静态类

public class Singleton {

    private Singleton(){}
    public static Singleton getInstance(){
        return SingletonInstance.INSTANCE;
    }

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

双锁验证

public class Singleton2 {

    private volatile static Singleton2 INSTANCE;
    private Singleton2(){}
    public static Singleton2 getINSTANCE(){
        synchronized (Singleton2.class){
            if(INSTANCE == null){
                synchronized (Singleton2.class){
                    if(INSTANCE == null){
                        INSTANCE = new Singleton2();
                    }
                }

            }
        }
        return INSTANCE;
    }
}

枚举

public class Singleton3 {

    private Singleton3(){}

    private enum SingletonObject{
        INSTANCE;
        private final Singleton3 instance;

        SingletonObject(){
            instance = new Singleton3();
        }

        public Singleton3 getInstance(){
            return instance;
        }
    }

    public static Singleton3 getInstance(){
        return SingletonObject.INSTANCE.getInstance();
    }
}
上一篇 下一篇

猜你喜欢

热点阅读