where T : new() 強制型別參數 T 擁有公用無參數建構子,使 SingletonCreator 能以 new T() 實例化。
public class TestClass
{
private string _createdTimestamp;
public TestClass() => _createdTimestamp = DateTime.Now.ToString();
public void Write() => Debug.WriteLine(_createdTimestamp);
}
SingletonProvider.Instance.Write();
任何執行緒、任何時間呼叫,皆回傳同一個實例的相同時間戳記。
泛型將單例骨架抽離為可重用 SingletonProvider<T>,極大簡化程式碼,保持彈性 (可單例也可非單例使用)。