C#でデザインパターン「Singletonパターン」

C# コンピュータ
C#

1つしか存在しないものや、複数あると都合の悪いものを、インスタンス化する仕組み。

・基本的に一つしか存在しないもの:

システムの設定情報
ロギングサービス
プリンタスプーラー

・複数存在すると都合の悪いもの:

データベース接続プール
キャッシュマネージャー
アプリケーション全体の状態を管理するオブジェクト

サンプルコード

/// <summary>
/// Singletonパターンの最もシンプルなサンプルコード (スレッド安全性は考慮していません)
/// </summary>
public class SimpleSingleton
{
    private static SimpleSingleton? _instance;

    // private なコンストラクタで外部からのインスタンス化を禁止
    private SimpleSingleton()
    {
        Console.WriteLine("Singleton インスタンスが作成されました。");
    }

    // 静的なインスタンス取得メソッド
    public static SimpleSingleton GetInstance()
    {
        if (_instance is null)
        {
            _instance = new SimpleSingleton();
        }
        return _instance;
    }

    // Singleton クラスのメソッド例
    public void DoSomething()
    {
        Console.WriteLine("Singleton インスタンスが何か処理をしました。");
    }
}

static class Program
{
    static public void Main()
    {
        var instance1 = SimpleSingleton.GetInstance();
        var instance2 = SimpleSingleton.GetInstance();

        if (ReferenceEquals(instance1, instance2))
        {
            Console.WriteLine("instance1 と instance2 は同じインスタンスです。");
        }

        instance1.DoSomething();
        instance2.DoSomething();
    }
}

コメント