劍指offer學習 實現單例模式

2022-09-11 03:57:09 字數 1014 閱讀 3326

只能生成乙個例項的類是為了實現單例模式的型別。

我們只是在例項還沒有建立之前加鎖操作,以保證只有乙個執行緒建立出例項。而當例項已經建立之後,我們已經不需要再做加鎖操作了。

public

sealed

class singleton

private

static

object syncobj = new

object();

private

static singleton instance = null;

public

static singleton instance

}return instance;

}}}

public seled class singleton

private

static singleton instance = new singleton();

public

static singleton instance

}}

由於c#中呼叫靜態建構函式時初始化靜態變數,.net執行時能夠保證只呼叫一次靜態建構函式,這樣我們就能夠保證只初始化一次instance。c#中呼叫靜態建構函式的時機不是由程式設計師掌控的,而是當.net執行時發現第一使用乙個型別的時候自動呼叫該型別的靜態建構函式。在singleton中,例項instance並不是第一次呼叫屬性singleton.instance的時候建立的,而是在第一次用到singleton的時候就會被建立。

public

sealed

class singleton

public

static singleton instance;

}class nested

internal

static

readonly singleton instance = new singleton();

}}

劍指offer 單例模式

單例模式分為懶漢式和餓漢式。所謂單例模式,就是構造器私有化,對外界提供唯一的乙份例項。public class test class person 構造器私有化 public static person getinstance return p public class test class per...

《劍指offer》系列 單例模式

永遠年輕,永遠熱淚盈眶。寫乙個單例模式 單例模式有多種寫法,以下整理了六種寫法,你都學會了嗎?public class test01 public singleton1 getinstance 懶漢式 非執行緒安全的 public static class singleton2 public sin...

劍指offer 題2 單例模式

懶漢式 第一次呼叫時載入 1.第一版 上來沒有想很多,直接敲起,使用synchronized保證執行緒安全,如下 public class single 使用synchronized保證安全 public static synchronized single getsingle return ins...