一千萬個為什麽

搜索

C#的單例模式

我需要存儲一堆需要全局訪問的變量,我想知道單例模式是否適用。從我看過的例子來看,單例模式只是一個無法繼承的靜態類。但我見過的例子對我的需求來說過於復雜。什麽是最簡單的單身人士課程?難道我不能只用一些變量制作一個靜態的密封類嗎?

最佳答案

通常,單例不是靜態類 - 單例將為您提供類的單個實例

我不知道你見過的例子,但通常單身模式可以在C#中非常簡單:

public sealed class Singleton
{
    private static readonly Singleton instance = new Singleton();
    static Singleton() {}//Make sure it's truly lazy
    private Singleton() {}//Prevent instantiation outside

    public static Singleton Instance { get { return instance; } }
}

這並不困難。

單例相對於靜態成員的優點是類可以實現接口等。有時這很有用 - 但有時候,靜態成員確實也會這樣做。另外,以後通常更容易從單身人士轉移到非單身人士,例如將單例作為“配置”對象傳遞給依賴類,而不是那些進行直接靜態調用的依賴類。

就個人而言,我會盡量避免使用單身人士 - 除了其他任何事情之外,他們會更加努力地進行測試。它們偶爾會有用。

轉載註明原文: C#的單例模式