单例模式三种实现
1. DCL双检验
public class A {
private static A sInsatnce =null;
private A(){}
public static A getInstance(){
if(sInstance==null){
synconized(A.class){
if(mInstance==null) mInstance = new A();
}
}
return sInstacne;
}
}
2.静态内部类
public class A{
private A(){}
public static A getInstance(){
return AHolder.sInstance
}
//在外部类加载的时候,静态内部类不会被加载,直到A中的方法getInstance()调用
private static class AHolder{
private static final sInstance =new A()
}
}
3.枚举单例
public enum SingletonEnum{
INSTANCE;
}