學習筆記 C 之單例模式

2021-10-21 21:11:21 字數 983 閱讀 3012

總結單例模式(singleton pattern),設計模式的一種。

一般運用在全域性只有乙個例項物件的情況。

環境:c++11和能夠支援c++11的編譯器

單執行緒下的單例模式,可稱為懶漢單例:單例只有在第一次使用的時候才建立。

class

singleton

// 析構函式

singleton

(const singleton &)=

delete

;// 刪除拷貝建構函式,以防單例被拷貝

singleton &

operator=(

const singleton &)=

delete

;// 刪除賦值函式,以防單例被拷貝

singleton &

getinstance()

// 獲取單例

private

:singleton()

=default

;//將建構函式置為private,便無法在類外定義該類的物件

};

該單例模式將例項置為函式內的區域性靜態物件,呼叫該函式將會返回該單例的引用,刪除掉該類預設的拷貝構造和賦值函式,置預設建構函式為private可以保證全域性只有getinstance()函式裡面的乙個單例。

區域性static物件的單例:第一次訪問的時候會初始化,直到函式退出之後該單例依然留在記憶體中,直到程式退出。

據我所知,上述的單例模式在單執行緒下已經是最完美的了,並且即使在多執行緒模式下,也具有執行緒安全性(指的是該單例能夠安全初始化)。

但是在多執行緒的環境,因為多執行緒之間的「競速」,如果不同執行緒需要訪問該單例,會出現一種不確定性,這通常不會是我們想要的。

多執行緒下的單例模式,可稱為餓漢單例:單例在實際使用之前就已經被建立。

2021/3/12,只學習了c++單執行緒下的單例模式,這天暫時還沒有接觸多執行緒程式設計環境。

c 學習筆記之單例

單例 在程式的整個程序中只會被例項化一次 class hero 定義乙個私有的靜態全域性變數來儲存該類的唯一例項 private static hero instance 定義乙個唯讀靜態物件 且這個物件是在執行時建立的 public static hero instance return inst...

設計模式之單例模式,學習筆記

所謂的單例模式就是說乙個物件,我們只去例項化一次,在頁面中如果有乙個物件是唯一的,那麼就可以用單例模式。var fn function name fn.prototype.getname function fn.getinstrace function var a fn.getinstrace js...

設計模式學習筆記之單例模式

什麼是單例模式?顧名思義,就是只有乙個例項,也就是說乙個應用程式中只有乙個例項物件.既然乙個系統,乙個應用程式中只有乙個例項,那麼也就說明了如果操作這乙個物件,必然涉及到共享資源,涉及到資源分配問題,資源競爭等問題.那麼我們的應用場景是什麼呢?2.池化技術.比如資料庫的連線池.每個資料庫的可支援的連...