//枚举模式
public enum EnumSingle {
INSANCE;
public void doSomeThing(){
System.out.println("do some thing");
}
}
package my;
//双检查
public class Single {
private Single(){}
private volatile static Single instance = null;
public static Single getInstance(){
if(instance == null){
synchronized (Single.class){
if(instance == null){
instance = new Single();
}
}
}
return instance;
}
}
package my;
//饿汉式
public class Single1 {
private static Single1 instance = new Single1();
private Single1(){}
public static Single1 getInstance(){
return instance;
}
}
package my;
//懒汉式
public class Single2 {
private static Single2 instance = null;
private Single2(){};
private static Single2 getInstance(){
if(instance == null)
instance = new Single2();
return instance;
}
}
package my;
//静态内部类
public class Single3 {
private Single3(){}
private static class Single3Hold{
private static Single3 istance = new Single3();
}
public static Single3 getInstance(){
return Single3Hold.istance;
}
}