我發現,在C#中,你可以實現一個Singleton類,如下所示:實現單繼承類
class Singleton
{
private static Singleton _instance;
public static Singleton Instance
{
get { return _instance ?? (_instance = new Singleton()); }
}
protected Singleton() { }
}
這對於Singleton
類型的實例工程,即:
var a = Singleton.Instance;
var b = Singleton.Instance;
Console.WriteLine(ReferenceEquals(a, b)); //Prints True.
但什麼如果我想要Singleton的派生類也遵循Singleton模式,即:
class A:Singleton
{ ... }
A a = A.Instance;
在這種情況下,通過Singleton
類訪問靜態成員Instance
,並創建一個Singleton
實例,這不是目標。 此外,還有兩個主要問題,這個解決方案:
- 派生類可以實現自己的構造和適度寬鬆的Singleton模式。
- 如果存在的
Singleton
另一個實例,則派生類將要引用少派生的實例
我的問題是:有另一種方式來實現在C#中的Singleton類確保派生類也是單身?
有趣的問題,我建議給這個讀:http://msmvps.com/blogs/jon_skeet/archive/2006/01/20/singleton-inheritance.aspx –