談?wù)?C 單例模式
時(shí)間:2021-11-08 15:23:36
手機(jī)看文章
掃描二維碼
隨時(shí)隨地手機(jī)看文章
[導(dǎo)讀]單例模式是一個(gè)很常見的設(shè)計(jì)模式,也廣泛應(yīng)用于程序開發(fā)。其具有如下特點(diǎn):一個(gè)類只有一個(gè)實(shí)例化對象全局可以使用那么有人要問,那我不就定義一個(gè)類,程序只初始化一個(gè)全局的實(shí)例就好了嗎?沒錯(cuò),這樣是可以的。但是我們都知道程序會(huì)經(jīng)過多人的接手維護(hù)和開發(fā),比如第N個(gè)接手程序的時(shí)候,并不知道這個(gè)...
單例模式是一個(gè)很常見的設(shè)計(jì)模式,也廣泛應(yīng)用于程序開發(fā)。其具有如下特點(diǎn):
- 一個(gè)類只有一個(gè)實(shí)例化對象
- 全局可以使用
- 單例模式的基本實(shí)現(xiàn):包含單例模式的實(shí)現(xiàn),線程安全,以及生命周期等
- 單例模式的模板實(shí)現(xiàn), 多模塊調(diào)用單例存在的問題
單例模式的基本實(shí)現(xiàn)
在程序開發(fā)中,比較常見的單例就是程序啟動(dòng)的相關(guān)配置信息了。比如我們定義一個(gè)SingletonConfig
類。注意這個(gè)類有如下特點(diǎn):- 私有的構(gòu)造函數(shù), 拷貝構(gòu)造函數(shù),以及
operator=
, 保證其不能夠在類的外部進(jìn)程對象構(gòu)造,拷貝等操作。 GetInstance
是一個(gè)公有的靜態(tài)成員函數(shù),用來構(gòu)造這個(gè)類唯一的實(shí)例對象m_objConfig
, 并且返回給使用者。
class SingletonConfig
{
public:
static SingletonConfig * GetInstance()
{
if (m_objConfig = = nullptr)
m_objConfig = new SingletonConfig;
return m_objConfig;
}
private:
SingletonConfig() { ; };
SingletonConfig(const SingletonConfig