你好! 這是泛型與單例所展示的歡迎頁。
普通單例類:
///
/// 單例模式的實現
///
public
class
singleton
///
/// 定義公有方法提供乙個全域性訪問點,
/// 同時你也可以定義公有屬性來提供全域性訪問點
///
///
public
static
singleton
getinstance()
}}return uniqueinstance;
}}
特點1:where 約束:引用型別/值型別
where t:class 是 引用型別約束,使用class關鍵字特點2:where 約束:new()【new不支援私有的無參建構函式】引用型別約束將乙個型別形參限定為引用型別。
引用型別一般是使用者定義的型別,包含類/介面/委託/字串和陣列型別。
在這個where子句中,class關鍵字是指定t必須是引用型別。因此,嘗試對t使用值型別,將會導致編譯錯誤。
where t:struct 是 值型別約束,使用struct關鍵字
值型別約束將乙個型別形參限定為值型別。
值型別派生於system.valuetype型別。基元和結構都是值型別。
在該形式中,struct關鍵字指定t必須是值型別。因此,嘗試對t使用引用型別,將導致編譯錯誤。
使用new()約束時應當注意:特點3:雙重執行緒鎖,更加安全1.new()約束可以與其他約束一起使用,但必須位於約束列表的末端
2.new()約束僅允許開發人員使用無引數的建構函式構造乙個物件,
即使同時存在其他的建構函式也是如此。即不允許給型別形參的構造
函式傳遞實參。
3.不可以同時使用new()約束和值型別約束。因為值型別都隱式的提
供了乙個無參公共建構函式。
就如同定義介面時指定訪問型別為public一樣,編譯器會報錯,因為介面一定是public的。
class
singleton
where t:
class
,new()
}}return _instance;
}}
以下**是不支援私有的無參建構函式的單例泛型
public
abstract
class
baseinstance
where t :
class
,new()
}}return instance;}}
}
以下**是支援私有的無參建構函式的單例泛型
public
class
baseinstance
where t :
class
//new(),new不支援非公共的無參建構函式 }}
return _instance;}}
public
static
void
setinstance(t
value
)}
作為物件導向的三大特性:封裝、繼承、多型 (抽象,嚴格來說不算)。
繼承之後,可以呼叫父類的方法【getinstance()】,獲取到本類(子類)的例項【new()之後的物件】,全域性單獨存在,獨一無二。
這個例項可以呼叫本類的所有方法和屬性進行操作。
class myclass : singleton
}///在main或者指定函式呼叫如下:
myclass.
getinstance()
.ss()
;
呼叫類的靜態方法 ,直接返回該型別的例項:
public
class
netio
public
netio()
public
datetime netiocreatetime
set}
private
datetime _ct;
}
using system;
using unityengine;
public
class
singletonprovider
where t :
class
,new()
private
static
t _instance;
// 用於lock塊的物件
private
static
readonly
object _synclock =
newobject()
;public
static
t instance
:建立了單例物件"
+typeof
(t).name);}
}}return _instance;
}set
}}
C 單例模式 泛型單例
以下均為個人觀點,如有錯誤望指出,共同學習進步,謝謝!在c 程式設計中我們常常需要用到單例,但是如果每個需要單例的類中都要寫一遍單例的實現,那就太麻煩了也太low了,我們需要秀一點的技巧。所以我們可以利用泛型來製作乙個單例的提供者,也可以說是中間人吧。先看單例中介的 public class sin...
單例模式的泛型實現 C
當開發人員想將乙個類以單例模式實現時,可以在類中寫單例模式的 實現。當時如果專案中存在多個單例模式的類時,我們可以採取每個類都寫的方式。但是更聰明的方法是採取單例模式的泛型實現。以下是乙個簡單的控制台泛型單例模式的例子。1.泛型單例類 class singletonwhere t class,new...
CocosCreator遊戲開發 泛型單例模式
1 cocoscreator遊戲開發中,我們在建立一些模組管理類的時候,一般都會用到單例模式,單例模式通常的做法是 export default class gamemanager return gamemanager.instance export class singleton t tretur...