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();
}
}
コメント