設計模式之單例模式

2021-08-26 08:53:54 字數 1384 閱讀 4027

(參考某位網友的,特此宣告。)

單例模式是一種常用的軟體設計模式。

核心結構:只包含乙個被稱為單例的特殊類;

目的:保證乙個類只有乙個例項,並提供乙個訪問他的全域性訪問點,該例項被所有程式模組共享;

引用場景:有一些物件只需要乙個,如:對話方塊,系統日誌,顯示卡等裝置的驅動程式物件、乙個pc連線乙個鍵盤等;

三種實現方式:懶漢式,餓漢式,雙重檢查鎖;

1.懶漢式:

建構函式宣告為private或者protect防止被外部函式例項化,內部儲存乙個private static的類指標儲存唯一的例項,例項的動作有乙個public的類方法實現。

class singleton   //實現單例模式的類

//私有的建構函式

static singleton* instance;

public:

static singleton* getinstance()

};

缺點:這個實現在單執行緒下是正確的,但在多執行緒情況下,如果兩個執行緒同時首次呼叫getinstance方法且同時檢測到instance是null,則兩個執行緒會同時構造乙個例項給instance,這樣就會發生錯誤。

改進的懶漢式(靜態內部變數)

在getinstance函式裡定義乙個靜態的例項,可以保證擁有唯一的例項,在返回是需要返回其指標即可。**如下:

class singleton   //實現單例模式的類

//私有的建構函式

public:

static singleton* getinstance()

};

3.改進的懶漢式(雙重檢查鎖)

思路:只有在第一次建立的時候進行加鎖,當instance不為空的時候就不需要進行加鎖的操作。**如下:

class singleton   //實現單例模式的類

//私有的建構函式

static singleton* instance;

public:

static singleton* getinstance()

unlock() //解鎖函式

}

return instance;

}};

4.餓漢式

餓漢式的特點是:一開始就建立了例項,所以每次用到的之後直接返回。**如下:

class singleton   //實現單例模式的類

//私有的建構函式

static singleton* instance;

public:

static singleton* getinstance()

};

設計模式之單例模式

前一段時間買了一本秦小波寫的 設計模式之禪 網上對這書的評價很高。現在還沒有看很多,但是有些地方頗有感觸,也並不是所有的地方都能看懂,但是會慢慢研究的。自己對於設計模式的感覺就是乙個字 牛!感覺會23種設計模式並且會熟練運用的人,真的就是大師級的牛人了,設計模式是乙個專案主管或者架構師一定要會的東西...

設計模式之單例模式

package com.xie.singleton public class singleton 提供乙個共有的靜態的入口方法 public static singleton getinstance 懶漢式 延遲載入 提供乙個私有的靜態的成員變數,但不做初始化 private static sing...

設計模式之 單例模式

單例模式 singleton 保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點。單例模式 單件模式 使用方法返回唯一的例項 public class singleton private static singleton instance public static singleton geti...