我有一个问题,我认为Singleton Pattern存在问题。假设我创建了一个Singleton类的对象并将其序列化。
现在我重新启动服务器。
假设我再次创建了Singleton类的实例,然后对其进行反序列化。它创建了两个对象。
这打破了Singleton模式。如何解决它,以便不创建第二个对象。
答案 0 :(得分:0)
单例的正确实现不会创建多个实例。如何做到这一点将取决于语言。例如,参见http://csharpindepth.com/Articles/General/Singleton.aspx
public sealed class Singleton
{
private static Singleton instance = null;
private static readonly object padlock = new object();
Singleton()
{
}
public static Singleton Instance
{
get
{
lock (padlock)
{
if (instance == null)
{
instance = new Singleton();
}
return instance;
}
}
}
}