C 單例模式設計例項

2021-08-17 19:40:24 字數 1227 閱讀 9602

所謂的單例模式就是在整個程式的生命週期中,只建立乙個例項。

要實現這種模式可以採用餓漢模式,飽漢模式,雙重鎖模式和懶載入模式。

什麼是餓漢模式呢?

餓漢模式就是很餓很著急,所以類載入時即建立例項物件。在這種情況下無需擔心多執行緒下例項被

多次建立的問題,但是如果有一些例項物件我們是不需要的那麼問題就來了,使用過多的話就會造

程啟動慢的問題;

說了這麼多那麼我們又該如何建立這樣的乙個單例模式呢?

public class hungry

public static hungry getinstance()//直接返回物件引用

}

有餓漢那麼想必就有飽漢。

飽了,所以並不著急產生例項化物件,需要的時候再產生,畢竟需要吃點小吃的時候再去吃東西嘛。

這麼隨意真的好嗎?那麼問題來了在需要的時候就產生例項化物件,這樣的話執行緒就變得不安全了,

這樣得話在產生例項化物件的時候就要判斷物件的引用是否為空,如果我們使用多個執行緒同時判斷

的話那豈不是很美好,然而這樣還是單例模式嗎?那如何解決這個問題呢?

public class satiation

public static synchronized satiation getinstance()

}

為了保護執行緒安全,使用synchronized關鍵字標識了方法。但是在這種模式中效率就會有所犧牲,因為

需要保證同步。

人類的智慧型是無限的,犧牲效率?於是乎為了提高飽漢模式的效率,那麼就創造除了雙重鎖模式,這種模式

是對飽汗模式的一種優化,進行雙重判斷,當已經建立過例項化物件後就無需加鎖,提高效率。

public class satiation_g		

}public static satiation_g getinstance()

} return _satiation; }

}

最後乙個就是懶載入模式了,此模式使用lock(synobjiect)用於保證**執行到該處時阻止另乙個程序訪問後面的**,

直到當前程序執行完成,主要是阻止多個程序同時訪問_lazy。

public class lazy

public static lazy getinstance()}}

return _lazy;

}}

C 設計模式 單例例項

一.建立乙個自己型別的私有靜態變數 二.將建構函式私有化 三.建立乙個獲取例項的public靜態函式 using system using system.collections.generic using system.linq using system.text using system.thre...

C 例項 單例模式

昨天晚上,我的老師 算是我的親戚 給了我一段 讓我看看。現copy如下 1 citysingleton.cs檔案 using system using system.data using system.configuration using system.web using system.web.s...

C 單例模式例項

定義 在某些情況下,我們設計中的物件只需要乙個,比方說 執行緒池 threadpool 快取 cache 對話方塊 處理偏好設定和登錄檔物件 日誌物件 充當印表機 顯示卡等裝置的驅動程式的物件等。事實上,這類物件只能有乙個例項,如果製造出多個例項,就會導致許多問題產生。這裡要說的單件模式就能確保乙個...