方法1
public class Elvis{
public static final Elvis instance=new Elvis();
private Elvis(){}
}
有可能会受到反射机制的攻击,解决方式是在构造器构造第二个实例的时候抛出异常
方法2静态工厂
public class Elvis{
private static final Elvis instance=new Elvis();
private Elvis(){}
public static Elvis getInstance(){ return instance;}
}
序列化的时候需要将属性加上transient
方法3:枚举类型
public enum Elvis{
INSTANCE;
。。。。
}
无偿的提供了序列化机制,可以防止多次实例化。最佳方法