单例模式的四种写法

2017-12-13  本文已影响79人  yangkg

//懒汉式

public class Singleton{

    private volatile static Singleton singleton; //声明成volatile

    privare Singleton(){}

    public static Singleton getSingleton(){

        if(singleton == null ){

            synchronized(Singleton.class){

                if(singleton == null){

                    singleton = new Singleton();

                }

        }

    }

    return singleton;

    }

}

//饿汉式

public class Singleton{

private static final Singleton instance = new Singleton();

private Singleton(){}

public static Singleton getInstance(){

return instance ;

}

}

//静态内部类

public class Singleton {

private static class SingletonHolder {

private static final Singleton INSTANCE = new Singleton();

}

private Singleton (){}

public static final Singleton getInstance() {

return SingletonHolder.INSTANCE;

}

}

//枚举 Enum

public enum EasySingleton{

INSTANCE;

}

上一篇下一篇

猜你喜欢

热点阅读