从前有一个人,他认为世上只有一只不寻常的狗,所以他写出了如下的类,将它
作为一个单件(singleton)[Gamma95]:
public class Dog extends Exception {
public static final Dog INSTANCE = new Dog();
private Dog() {}
public String toString(){
return "Woof";
}
}
结果证明这个人的做法是错误的。你能够在这个类的外部不使用反射来创建出第
2 个Dog 实例吗?
因为Exception实现了Serializable 接口,所以该类也可以被序列化,通过实例化可以构造第二个实例
本文探讨了单例模式在Java中的实现,并通过一个具体的例子解释了如何利用序列化特性来破坏单例模式,创建额外的对象实例。
1483

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



