注意在這裡使用了泛型的約束。這個約束強制任何類型'T'都必須具有無參數 的公共構造函數。這裡允許singletonCreator類來實例化類型'T'。
那麼,要怎麼樣來使用單例提供者呢?為了弄清除如何使用它,我們需要寫一 個測試類。這個測試類有兩個部分。第一部分是一個默認的構造函數,用來設置 timestamp變量的值。第二部分是一個公共函數,用來實現用 "Debug.WriteLine"來輸出timestamp的值。這個測試類的意思就是不 論那個線程在任何時候,在單例下調用這個類公共方法,都將返回相同的值。
public class TestClass
{
private string _createdTimestamp;
public TestClass ()
{
_createdTimestamp = DateTime.Now.ToString();
}
public void Write()
{
Debug.WriteLine(_createdTimestamp);
}
}
這個類就像下面這樣使用單例提供者:
SingletonProvider<TestClass>.Instance.Write ();
關注點
我已經在一個超線程的雙處理器上使用100個線程在單態模式下進行了測試。 所有線程都返回相同的值,這說明這是一個線程安全的使用泛型來實現的單態模 式。 我相信這已經充分說明了泛型怎麼幫助你簡化代碼。