[C#][デザインパターン] Singletonパターン

スポンサーリンク

今回は、デザインパターンの1つであるSingletonパターンを作成してみます。

Singletonパターンは、そのクラスのインスタンスが1つしか生成されないことを保証することができます。

以下はC#におけるSingletonパターンのクラスコードです。

C#の例

public sealed class Singleton
{
    /// <summary>
    /// インスタンスの生成
    /// </summary>
    private static readonly Singleton _singleton = new Singleton();

    /// <summary>
    /// インスタンスを返すプロパティ
    /// </summary>
    public static Singleton Instance
    {
        get {  return _singleton; }
    }

    /// <summary>
    /// コンストラクタ
    /// </summary>
    private Singleton() {

    }
}

コンストラクタの識別子がprivateであることに注目してください。これによりSingletonクラスのインスタンスは外部から作成することができません。

Singletonクラスのインスタンスがほしい場合はInstanceプロパティを参照します。Instanceプロパティは読み取り専用プロパティであり、クラス内部で生成されたインスタンスを返します。

以下にSingletonクラスの使用例を示します。

C#の例

static void Main(string[] args)
{
    Singleton sng1 = Singleton.Instance;
    Singleton sng2 = Singleton.Instance;

    if (sng1 == sng2)
    {
        Console.WriteLine("sng1とsng2は同一のインスタンスです");
    }
}
Please follow and like us:

コメント

タイトルとURLをコピーしました