实现Singleton单例模式的方法
1、私有化构造器,通过静态方法获取公有的唯一的实例
public class Elvis{
private static final Elvis INSTANCE = new Elvis();
private Elvis() {
}
public static getInstance() {
return INSTANCE;
}
}
2、直接公有化静态成员
public class Elvis{
//直接通过Elvis.INSTANCE 获取类的唯一实例
public static final Elvis INSTANCE = new Elvis();
private Elvis() {
}
}
实现Serializable接口可以实现反序列化,但是为了维护每次返回的对象都是同一个实例,需要在类中加入readResolve方法
private Object readResolve() {
return INSTANCE;
}
3、用一个包含单个元素的枚举类型来实现Singleton(推荐使用)
public enum Elvis {
INSTANCE;
}
枚举类无偿提供序列化,并且防止多次实例化