設計模式 單例模式(c )

2021-07-16 20:31:04 字數 997 閱讀 9742

在gof《設計模式》中,單例模式的定義為——保證乙個類僅有乙個例項,並提供乙個該例項的全域性訪問點。

下面是單例模式的c++實現:

方案一:

(建構函式和拷貝建構函式一定要宣告為private;定義static成員:單例指標和獲取單例指標的函式;static單例指標要在類外定義並初始化;實現獲取單例指標的函式時要注意執行緒安全的問題)

class singleton ;

singleton* singleton::m_instance = nullptr;

//執行緒非安全版本

singleton* singleton::getinstance()

return m_instance;

}//執行緒安全版本,但鎖的代價過高,高併發時不能用該版本

singleton* singleton::getinstance()

return m_instance;

}//雙檢查鎖,但由於記憶體讀寫reorder不安全,所以該版本也是執行緒非安全的

singleton* singleton::getinstance()

}return m_instance;

}//c++ 11版本之後的跨平台實現 (volatile)

std::atomicsingleton::m_instance;

std::mutex singleton::m_mutex;

singleton* singleton::getinstance()

}return tmp;

}方案二:

(根據effective c++ 條款04改寫,有待進一步檢驗是否可行)

class singleton

singleton(const singleton&);

public:

static singleton* getsingleton();

};//非執行緒安全

singleton* singleton::getsingleton()

設計模式 C 設計模式 單例模式

設計模式 物件導向設計七大原則 設計模式 設計模式概念和分類 設計模式 c 設計模式 單例模式 設計模式 c 設計模式 工廠方法模式 設計模式 c 設計模式 抽象工廠模式 設計模式 c 設計模式 建造者模式 設計模式 c 設計模式 原型模式 作者自用的泛型單例模組 單例模式 singleton pa...

C 設計模式 (單例模式)

單例模式 顧名思義,只有乙個物件例項,即保證乙個類只有乙個物件可以使用。作用類似於乙個全域性變數,可以任意呼叫,但是比全域性變數更容易管理,使用。單例模式也有很多種實現方式 第一種實現方法 h檔案 class csock test public casyncsocket cpp檔案 csock te...

c 設計模式 單例模式

第一種最簡單,但沒有考慮執行緒安全 public class singleton public static singleton createinstance return instance 第二種考慮了執行緒安全,不過有點煩,但絕對是正規寫法,經典的一叉 public class singleto...