設計模式之單例模式 Singleton C 實現

2021-10-02 00:06:36 字數 1391 閱讀 8247

特點:1. 建構函式 私有化,因此不能直接定義乙個該類的物件:  private: csingle(){};

2. 定義乙個型別為 該類本身的指標 的乙個靜態成員 : static csingleton* m_singleinstance;

3. 定義乙個返回型別為 該類本身的指標 的乙個靜態成員函式:

static csingleton* getsingleinstance();

static csingleton* m_sticsingleinstance;

static csingleton* getsingleinstance();

private:

csingleton() {};

};

#include "csingleton.h"

#include #include boost::mutex g_mutex;

csingleton* csingleton::m_sticsingleinstance = nullptr;

csingleton* csingleton::getsingleinstance()

return m_sticsingleinstance;

}

2. 提前分配好m_singleinstance例項,在靜態成員例項m_singleinstance初始化時就將實現 new csingleton,而不是在getsingleinstance()函式中再建立例項物件;

#include "csingleton.h"

//初始化就建立例項,不會建立有多個例項

csingleton* csingleton::m_sticsingleinstance = new csingleton;

csingleton* csingleton::getsingleinstance()

3. double-checked locking,使用「雙重檢查鎖」,volatile修飾靜態成員m_singleinstance,在getsingleinstance函式中,先檢查例項是否已建立,如果尚未建立,才進行同步; 這樣,只有第一次時會有同步操作,後續使用getsingleinstance函式時不會有同步動作,減少消耗;

#include "csingleton.h"

#include #include boost::mutex g_mutex;

csingleton* csingleton::m_sticsingleinstance = nullptr;

csingleton* csingleton::getsingleinstance()

lock.unlock();

} return m_sticsingleinstance;

}

Java設計模式 單例模式(single)

目錄目的 應用例項 保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點。菜鳥教程 乙個國家有乙個首都 windows 是多程序多執行緒的,在操作乙個檔案的時候,就不可避免地出現多個程序或執行緒同時操作乙個檔案的現象,所以所有檔案的處理必須通過唯一的例項來進行。第一種 package com.ga...

設計模式之單例模式

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

設計模式之單例模式

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