利用的是内部类配合枚举实现的单例模式:
优点:
- 枚举实现的单例模式,不但可以防止利用反射强行构建单例对象,而且可以防止枚举类对象被反序列化的时候,保证反序列对象返回的结果是同一对象;
- 利用内部类可以实现懒加载,从外部无法访问MyEnumSingle,只有当调用
- 这种方式是线程安全的。
MySingleton.MyEnumSingle.INSTANCE.getInstance()
才能得到单例对象。
/**
* 最完美的单例模式
* @author Administrator
*
*/
public class MySingleton {
private enum MyEnumSingle{
INSTANCE;
private MySingleton singleOne;
private MyEnumSingle(){
System.out.println("初始化单例");
singleOne = new MySingleton();
}
public MySingleton getInstance(){
return singleOne;
}
}
private MySingleton(){}
public static MySingleton getInstance(){
return MyEnumSingle.INSTANCE.getInstance();
}
}