单个模式由三个类使用

时间:2016-03-17 01:06:43

标签: c#

采访者问我这个问题:

  

您已经实现了单例模式,它被3使用   类,一类处理对象。还有其他两个班级   能够访问?

这是怎么回事? 你能解释一下吗?

2 个答案:

答案 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