单例设计问题:(创建单个类的两个对象)

时间:2014-05-01 10:25:26

标签: design-patterns

我有一个问题,我认为Singleton Pattern存在问题。假设我创建了一个Singleton类的对象并将其序列化。

现在我重新启动服务器。

假设我再次创建了Singleton类的实例,然后对其进行反序列化。它创建了两个对象。

这打破了Singleton模式。如何解决它,以便不创建第二个对象。

1 个答案:

答案 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;
            }
        }
    }
} 
相关问题