c 泛型與單例

2021-10-24 14:07:11 字數 2716 閱讀 9959

你好! 這是泛型與單例所展示的歡迎頁。

普通單例類:

/// 

/// 單例模式的實現

///

public

class

singleton

///

/// 定義公有方法提供乙個全域性訪問點,

/// 同時你也可以定義公有屬性來提供全域性訪問點

///

///

public

static

singleton

getinstance()

}}return uniqueinstance;

}}

特點1:where 約束:引用型別/值型別

where t:class 是 引用型別約束,使用class關鍵字

引用型別約束將乙個型別形參限定為引用型別。

引用型別一般是使用者定義的型別,包含類/介面/委託/字串和陣列型別。

在這個where子句中,class關鍵字是指定t必須是引用型別。因此,嘗試對t使用值型別,將會導致編譯錯誤。

where t:struct 是 值型別約束,使用struct關鍵字

值型別約束將乙個型別形參限定為值型別。

值型別派生於system.valuetype型別。基元和結構都是值型別。

在該形式中,struct關鍵字指定t必須是值型別。因此,嘗試對t使用引用型別,將導致編譯錯誤。

特點2:where 約束:new()【new不支援私有的無參建構函式】

使用new()約束時應當注意:

1.new()約束可以與其他約束一起使用,但必須位於約束列表的末端

2.new()約束僅允許開發人員使用無引數的建構函式構造乙個物件,

即使同時存在其他的建構函式也是如此。即不允許給型別形參的構造

函式傳遞實參。

3.不可以同時使用new()約束和值型別約束。因為值型別都隱式的提

供了乙個無參公共建構函式。

就如同定義介面時指定訪問型別為public一樣,編譯器會報錯,因為介面一定是public的。

特點3:雙重執行緒鎖,更加安全

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...