单例模式的四种写法
//懒汉式
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;
}