package com.zxm;
import java.io.Serializable;
/**
* Creator:zxm
* Date:2017/2/23
* Description:
*/
public class Elvis implements Serializable{
public static final Elvis INSTANCE = new Elvis();
private Elvis(){
// ...
}
//防止享有特权的客户端借助AccessibleObject.setAccessible方法,通过反射机制调用私有构造器
public static Elvis getInstance(){
return INSTANCE;
}
//为了变成可序列化的,必须声明所有实例域都是瞬时的(transient),并提供一个readResolve方法
private Object readResolve(){
return INSTANCE;
}
}
public enum Elvis{
INSTANCE;
}
实用包含单个元素的枚举,无偿地提供了序列化机制,绝对防止多次实例化,即使是面对复杂的序列化或者反射攻击的时候。
单元素的枚举类型已经成为实现Singleton的最佳方法
本文探讨了使用枚举实现单例模式的方法,该方法能够有效地防止多次实例化,并抵御序列化或反射攻击。介绍了如何通过定义单元素枚举来确保类的唯一实例,同时保证序列化机制的安全。
1368

被折叠的 条评论
为什么被折叠?



