C 單例模式的實現再回顧

2022-03-26 02:27:56 字數 1315 閱讀 8682

一、單例模式的實現以及標準

1、例項要是static型別,保證記憶體中只有乙份copy

2、不能夠外部建立,也就是通過關鍵字private私有化建構函式

3、提供乙個外部訪問方法getinstance

4、無論何時必須考慮執行緒安全問題

二、懶漢模式

需要時才建立,因此稱作懶漢模式,**示例如下:

public

class

robot

public

static

robot getinstance()}}

return

m_instance;

}public

void

sayhello()

}

lock是為了保證執行緒安全,第乙個if是判斷是否需要建立,第二個是為了判斷在多執行緒的情況下是否需要建立

二、餓漢模式

在宣告的時候就建立,已經餓了,不管用不用,先建立,因此使用的時候效率會高一些,但一開始就佔了記憶體,因此省時費空間

private static readonly robot m_instance = new robot();

// close out init

private robot()

public static robot getinstance()

public void sayhello()

由於利用了靜態變數的特性,因此一開始就建立完成,程式執行中又不會修改,因此執行緒安全。

三、利用.net 4.0以後的lazy模板來實現懶漢模式,並且lazy模板自動線程安全

public

class

robot

public

static

robot getinstance()

public

void

sayhello()

}

四、模板實現

如果還覺得麻煩,那麼好,可以試下乙個模板

public

abstract

class singletonwhere t : class

//,new()

public

static

t getinstance() }}

return

singleton;}}

public

class robot:singleton

public

void

sayhello()

}

注意:子類中需要關閉建構函式。

C 單例模式實現再回顧

單例模式需要注意的問題 1 static例項保證只有乙個例項 2 需要c 類外初始化例項 執行緒鎖等 3 私化建構函式,關閉賦值運算子 和拷貝建構函式 4 應當有releas函式 5 應該考慮執行緒安全問題 下面是懶漢模式的實現 include include class singleton inc...

單例模式 回顧

單例模式 讓乙個類只能建立乙個物件 設計模式 設計經驗,是一套固定的設計 的經驗 步驟 1.首先讓建構函式私有化 2.提供一套static修飾的函式 並且 返回乙個物件 單例模式一共有兩種方式表達 1.餓模式 public class ootest private static ootest oo ...

C 實現單例模式

給所需要進行單例的類ctest的建構函式宣告為private或者protected 防止在類外隨意生成ctest的物件 然後宣告乙個靜態成員變數 instance 乙個靜態成員函式getinsance staticctest getinstance staticctest instance 靜態成員...