設計模式複習 單例模式

2021-09-25 04:38:48 字數 1864 閱讀 4773

/*設計模式-單例模式(singleton)

保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問節點。

[懶漢模式涉及多執行緒上鎖問題,餓漢模式不涉及多執行緒上鎖問題]

下面實現懶漢跟餓漢模式,先不考慮上鎖問題,最後補充。

*//*

設計模式-迭代器模式(iterator)

提供一種方法順序訪問乙個聚合物件中的各個元素,而不暴露該物件內部表示。

(現在好多語言都已經內建實現了這個功能了,所以實際用途不大,

但是建議寫一下,實現過程價值遠遠大於使用價值。)

*///懶漢模式

class cwork //注意,建構函式私有化可以限制其他人去例項化這個類。

//餓漢模式

class cwork //注意,建構函式私有化可以限制其他人去例項化這個類。

還有就是鎖的問題。多執行緒環境下使用單例模式中的懶漢模式會涉及到上鎖問題,主要是在這個地方:

上面是乙個傳統的上鎖模式,但是這個會有乙個資源浪費問題,就是雖然m_cwork已經不等於null了,但是還是會不停的上鎖和解鎖,上鎖和解鎖涉及到核心態和使用者態的轉換,這回導致資源浪費。於是便引出了雙重鎖的概念,雙重鎖全稱雙重檢查鎖定模式,縮寫dclp。

大體姿勢是這樣:

static void getinstance()}}}

但是繼續延伸一下,根據這裡(

)的分析:雙重鎖也是不餓穩定的,那篇文章裡引入了volatile來解決問題,感興趣的可以了解一下,我的思路是用彙編處理這個地方。不管用什麼方式,注意一點,就是編譯器會對我們的**進行優化。也就是變換了很多姿勢,最後轉出來的彙編是一樣的。這個地方要注意。

設計模式複習 單例模式

單例模式,可以說是設計模式種最簡單的模式了,因為它只有乙個物件,這也就呼應了它的名字 單例模式 至於為什麼只有乙個物件,下面會進一步講述。這裡先說說單例模式的使用場景吧,在此我總結了以下幾種 1.資料共享。例如 執行緒池,需要管理執行緒的數量 2.提高效率,降低記憶體損耗。例如 db連線池,連線的是...

設計模式複習之單例模式

單例模式 保證同乙個類只有乙個物件例項 主要複習三種實現方式 餓漢 飽漢 雙重校驗鎖 1.餓漢 模式 單例模式之餓漢模式 類載入時即建立例項物件 public class singletona public static singletona getinstance 2.飽漢模式 單例模式之飽漢模式...

設計模式之單例模式複習總結

單例模式 單例模式就是該類在整個程式的使用過程中有且僅有乙個例項。也就是它的構造方法是私有的,該類負責建立自己的物件,同時確保只有乙個物件被建立。當有些封裝的類會去重複載入,使用單例模式可以節省資源。單例模式有哪些?還有列舉,列舉的可讀性差就先不看了 懶漢模式 懶漢模式就是用到就通過呼叫getsta...