一、單例模式的實現以及標準
1、例項要是static型別,保證記憶體中只有乙份copy
2、不能夠外部建立,也就是通過關鍵字private私有化建構函式
3、提供乙個外部訪問方法getinstance
4、無論何時必須考慮執行緒安全問題
二、懶漢模式
需要時才建立,因此稱作懶漢模式,**示例如下:
publicclass
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模板自動線程安全
publicclass
robot
public
static
robot getinstance()
public
void
sayhello()
}
四、模板實現
如果還覺得麻煩,那麼好,可以試下乙個模板
publicabstract
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 靜態成員...