設計模式之單例模式精簡寫法解惑

2021-09-26 00:09:30 字數 925 閱讀 7494

單例模式介紹

保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點。

單例模式的精簡寫法

public class singletonwhere t : new()

}class  singletoncreate

}疑問解析:

singleton:泛型

where t : new():型別引數(t)必須具有無引數的公共建構函式

static readonly t:順便了解下const 和static readonly的區別

const和static readonly的確很像:通過類名而不是物件名進行訪問,在程式中唯讀等等。在多數情況下可以混用。

二者本質的區別在於,const的值是在編譯期間確定的,因此只能在宣告時通過常量表示式指定其值。而static readonly是在執行時計算出其值的,所以還可以通過靜態建構函式來賦值。

static readonly int constintarray = new int ;

不可以換成const。new操作符是需要執行建構函式的,所以無法在編譯期間確定,雖然看起來1,2,3的陣列的確就是乙個常量。

void somefunction()

不可以換成readonly,readonly只能用來修飾類的field,不能修飾區域性變數,也不能修飾property等其他類成員。

static readonly需要注意的乙個問題是,對於乙個static readonly的reference型別,只是被限定不能進行賦值(寫)操作而已。而對其成員的讀寫仍然是不受限制的。

public static readonly myclass myins = new myclass();

myins.someproperty = 10;  

//正常

myins = new myclass();    //出錯,該物件是唯讀的

設計模式之單例模式精簡寫法解惑

單例模式介紹 保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點。單例模式的精簡寫法 public class singletonwhere t new class singletoncreate 疑問解析 singleton 泛型 where t new 型別引數 t 必須具有無引數的公共建構...

設計模式之單例模式的幾種寫法

經過了前面幾次的面試,我發現面試官對設計模式方面的提問頻率是非常高的,所以學習設計模式是一件刻不容緩的事情,今天我們就來說一下設計模式中的單例模式吧。設計模式並不是什麼神技,而是一套 的設計,是經驗的總結,使用設計模式是為了實現 的復用以及 解耦 關於程式設計裡面解耦的概念可以參考一下下面這篇知乎。...

設計模式 單例模式的寫法

目錄第三種實現方式 執行緒安全 雙重檢查 加鎖 3 靜態內部類實現單例模式 4 列舉 5 參考鏈結 單例模式的特點就是建構函式私有化,變數私有化,然後定義乙個public的方法。class singleton public static singleton getinstance 第一種實現方法 執...