一 單件模式

2021-05-21 11:36:43 字數 859 閱讀 7193

什麼是單件模式?

簡單的說就是:單件模式即乙個類在整個程式執行過程中只能有乙個例項(唯一物件),由它自身負責儲存它的唯一例項,這個類可以保證沒有其他例項可以被建立(截斷建立新物件的請求),並且它可以提供乙個全域性訪問點(例如instance())。

什麼情況下需要使用單件模式?

1、對於乙個類(物件),如果它比較大(占用的系統資源非常多),而且這些資源可以被全域性共享,則可以設計為singleton模式。

2、對於乙個類,需要對例項進行計數。可以在instance中進行,並可以對例項的個數進行限制。

3、對於乙個類,需要對其實例的具體行為進行控制,例如,期望返回的例項實際上是自己子類的例項。這樣可以通過singleton模式,對客戶端**保持透明。

單件模式的實現方法?

1、是在instance函式中使用靜態物件。

2、是在單件類中使用乙個靜態指標。外部在第一次呼叫instance函式時去初始化.

兩種方法都各有優缺點,如果使用靜態物件可以使**看上去簡單,且物件的構造和析構也是自動完成的;但是由於c++中的靜態物件是在棧上分配記憶體的,所以對於》1m的物件可能會有些問題,而且如果面對的是乙個龐大的系統時,如果所有的單件類的唯一例項都採用靜態物件方法實現,那情況豈不更糟.

對於用指標的實現方法,它的好處是例項是開闢在堆上的,便是會帶來兩個問題:

一、應該在哪個地方去刪除它?

對於刪除問題,一種方法是採用在整個系統退出的時候,由某個類統一的去刪除它們,另外也可以讓單件類的唯一例項的生成也由該類來統一呼叫生成;另一種方法是採用智慧型指標的方式來實現,比如auto_ptr。

二、必須考慮多執行緒中同步互斥的問題,因為會發生同時new類物件的事情。

可以考慮使用封裝乙個類,內部採用臨界區的方法來實現。

單件模式(單例模式)

readme 0.1 本文部分描述 head first 設計模式 旨在學習 單件模式 單例模式 的相關知識 及其應用 單件模式 1.0 單件模式的應用背景 有一些物件其實我們只需要乙個,比方說 執行緒池,快取,對話方塊,登錄檔等的物件,這都可以通過單件模式來解決 1.1 定義 確保乙個類只有乙個例...

單件模式(單例模式)

1 單件模式 確保乙個類只有乙個例項,並提供乙個全域性訪問點。2 經典的單件模式實現 public class singleton public static singleton getinstance return uniqueinstance 問題點 public static singleto...

單例模式(單件模式)

color red size medium 單件模式,就是確保乙個類只有乙個例項,並提供乙個全域性訪問點。size color 單例的作用是獨一無二,比方說,如果有乙個登錄檔設定的物件,你不希望這樣的物件有多個拷貝吧,那會把設定搞得一團亂,利用像單例這樣的單件物件,可以確保程式中使用的全域性資源只有...