一、饿汉模式
public class SingleOne {
private final static SingleOne INSTANCE = new SingleOne();
private SingleOne(){}
public SingleOne getInstance(){
return INSTANCE;
}
}
二、懒汉模式
public class SingleTwo {
private static volatile SingleTwo instance = null;
private SingleTwo(){}
public static SingleTwo getInstance(){
if (null == instance){
synchronized (SingleTwo.class){
if (null == instance){
instance = new SingleTwo();
}
}
}
return instance;
}
}
三、静态内部类(推荐使用)
public class SingleThree {
private SingleThree(){}
private static class SingleInstance{
private final static SingleThree INSTANCE = new SingleThree();
}
public SingleThree getInstance(){
return SingleInstance.INSTANCE;
}
}
四、枚举类模式(推荐使用)
public class SingleFour {
private SingleFour(){}
private enum SingleInstance{
INSTANCE;
private SingleFour instance;
//枚举类的特性,此处只会调用一次
SingleInstance(){
instance = new SingleFour();
}
public SingleFour getSingleFour(){
return instance;
}
}
public static SingleFour getInstance(){
return SingleInstance.INSTANCE.getSingleFour();
}
}