解除分配并重新实例化新单例

时间:2013-04-02 22:59:00

标签: c# design-patterns singleton static-methods

我想从原始单例对象中取消分配内存,并使用另一种方法创建一个新内存。

public sealed class ObjectZ {
    static readonly ObjectZ _instance = new ObjectZ();
    private ObjectZ() {}
    public static ObjectZ Instance{
        get { return _instance; }
    }
}

这种方法会是什么样的?

1 个答案:

答案 0 :(得分:2)

单身人士通常会创建一次,并且在域的生命周期中存在,重新创建单身人士是狡猾的业务,根据定义,我提供的代码并不是真正的单身人士。

您似乎遵循的行为是可以无效的静态可访问的单个对象缓存。

public static class SingletonAccessor
{
    private static SomeClass _instance;
    private static object _lock = new Object();

    public static SomeClass Singleton
    {
        get
        {
            lock (_lock)
            {
                if (_instance == null)
                {
                    _instance = new SomeClass();
                }

                return _instance;
            }
        }
    }

    public static void Recycle()
    {
        lock (_lock)
        {
            if (_instance != null)
            {
                // Do any cleanup, perhaps call .Dispose if it's needed

                _instance = null;
            }
        }
    }
}