单例模式的四种写法

//懒汉式

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;

}

你可能感兴趣的:(单例模式的四种写法)