采访者问我这个问题:
您已经实现了单例模式,它被3使用 类,一类处理对象。还有其他两个班级 能够访问?
这是怎么回事? 你能解释一下吗?
答案 0 :(得分:2)
如果它是Singleton,那么这意味着它只有一个实例 - 引用它的每个人都获得相同的实例。如果你要处理这个实例 - 虽然这对于Singleton来说似乎很奇怪 - 然后那些尝试引用它的类可能会得到一个ObjectDisposedException
答案 1 :(得分:0)
Singleton Pattern,由3个类使用
我假设它们意味着3个变量/引用,而不是类。
示例强>:
var a = MyClass.Instance;
var b = MyClass.Instance;
var c = MyClass.Instance;
一个类处理了该对象 - 其他两个类仍然可以 访问?
没有
它将如何运作?你能解释一下吗?
singelton模式的目的是只有一个类的实例。因此,无论何时引用它,即上面的(a,b,c),它都是相同的实例(它指向内存中的相同地址)。
因此,如果其中一个类处理了实例,这意味着当前指向单例的所有引用也将具有被处置对象(因为所有引用都指向对象所在的相同地址位置) )。
示例:强>
a.Dispose(); // will dispose MyClass.Instance, making all references to it also have the disposed object
// a will now be disposed
// b will now be disposed
// c will now be disposed