当Singleton
无效Singleton
时,有人可以告诉我吗?
答案 0 :(得分:9)
作者 Joshua Fox 在Sun网站上发布了非常好的帖子。请仔细阅读。
下面是<{1}}表现不佳的情况下的一些情况。答案 1 :(得分:1)
如果给定的类由多个类加载器加载,则单例(在Java中)不会作为单例工作。由于单个类可以在多个类加载器中存在(或者可以加载),因此很可能具有多个&#34;多个&#34; &#34;据称&#34;的实例给定JVM实例的单例类。但这是一个非常罕见的情况,并没有发生太多。 :)
答案 2 :(得分:0)
答案 3 :(得分:0)
如果您能够创建多个类的实例,那么它不会通过使用克隆,反序列化等方式保持单例。
答案 4 :(得分:-1)
这样的事情会违背Singleton的目的:
public class BadSingleton
{
private BadSingleton()
{
}
public BadSingleton getInstance()
{
return new BadSingleton();
}
}
以上每次调用BadSingleton
方法时都会返回getInstance()
类的新实例。这将允许类的各种实例违反Singleton设计模式的目的。
使用多个类加载器也可以实现类似的场景(即使正确编写了Singleton)。