C# 单例模式 与JSON反序列化冲突

1.单例模式

//单例模式 懒汉式 使用时才会实例化对象
class Machine
{
    private static Machine machine;
    private static readonly object locker = new object();

    private Machine()
    {
    }
    public static Machine GetMachine()
    {
        lock (locker)
        {
            if (machine == null)
            {
                machine = new Machine();
            }
        }
        return machine;
    }
}

2.JSON反序列化

using Newtonsoft.Json;

Machine machine = JsonConvert.DezerializeObject(Str);

3.冲突

单例模式使类的实例化对象始终只有一个,但JSON反序列化克隆出一个新的对象,此时厂上存在两个实例化对象,与单例模式的要求相违背。

4.解决方法

将json反序列化的对象挨个属性赋值给单例模式生成的对象,但该方法治标不治本,本身还是有两个对象存在。

还有些其他方法,目前还没掌握。

你可能感兴趣的:(单例模式)