Singletonパターン
Singleton
生成に関するデザインパターン。
システムにクラスのインスタンスが1つのみであることを保証する。
一般的に"グローバルスコープ"からの呼び出しによく使われる。
しかし、"複数アクターに対して責任を持ってしまう"ため、SOLID原則の
単一責任の原則(Single Responsibility Principle) - おっさんの備忘録
に違反する。
// Singletonパターン
public class MySingleton
{
private static MySingleton? mySingleton;
public int UniqueValue { get; set; }
private MySingleton() {}
public static MySingleton GetInstance() => mySingleton ??= new();
}
// 動作確認
[TestClass]
public class SingletonUT
{
[TestMethod]
public void MySingletonUT()
{
var mySingleton1 = MySingleton.GetInstance();
var mySingleton2 = MySingleton.GetInstance();
Assert.AreEqual(mySingleton1, mySingleton2);
mySingleton1.UniqueValue = 10;
Assert.AreEqual(10, mySingleton1.UniqueValue);
Assert.AreEqual(10, mySingleton2.UniqueValue);
mySingleton2.UniqueValue = 15;
Assert.AreEqual(15, mySingleton1.UniqueValue);
Assert.AreEqual(15, mySingleton2.UniqueValue);
}
}