c 單例模式

2021-10-10 02:57:18 字數 1676 閱讀 1745

設計模式(design pattern)是一套被反覆使用、多數人知曉的、經過分類的、**設計經驗的總結。為什

麼會產生設計模式這樣的東西呢?就像人類歷史發展會產生兵法。最開始部落之間打仗時都是人拼人的對

砍。後來春秋戰國時期,七國之間經常打仗,就發現打仗也是有套路的,後來孫子就總結出了《孫子兵

法》。孫子兵法也是類似。

使用設計模式的目的:為了**可重用性、讓**更容易被他人理解、保證**可靠性。 設計模式使**編

寫真正工程化;設計模式是軟體工程的基石脈絡,如同大廈的結構一樣。

乙個類只能建立乙個物件,即單例模式,該模式可以保證系統中該類只有乙個例項,並提供乙個訪問它的全

局訪問點,該例項被所有程式模組共享。

class

singleton

return _pinst;

}singleton

(const singleton& s)

=delete

;private

:singleton()

static singleton* _pinst;};

singleton* singleton::_pinst =

nullptr

;int

main()

//餓漢模式 一開始(main函式之前)就建立物件

class

singleton

singleton

(const singleton&)=

delete

;private

:singleton()

static singleton _inst;};

singleton singleton::_inst;

class

singleton

}//_mutx.unlock();

return _pinst;

}static

void

delinstance()

singleton

(const singleton& s)

=delete

;private

:singleton()

static singleton* _pinst;

static mutex _mtx;};

classgc}

;static gc gc;

singleton* singleton::_pinst =

nullptr

;mutex singleton::_mtx;

//int main()

//int

main()

));}

for(

auto

& e : vthreads)

return0;

}

1.懶漢模式需要考慮執行緒安全和釋放問題,實現相對更複雜,餓漢模式不存在以上問題,實現簡單

2.懶漢是一種懶載入模式需要時在初始化建立物件,不會影響程式的啟動。餓漢模式則相反,程式啟動階段就建立初始化例項物件,會導致程式啟動慢,影響體驗。

3.如果有多個單例類,假設有依賴關係,要求a先啟動,b再啟動,就不能用餓漢,因為無法保證建立初始化順序,這時用懶漢我們就可以手動控制。

總結:實際中懶漢模式更實用一些

C 單例模式

include using namespace std 單例類的c 實現 class singleton 構造方法實現 singleton singleton void singleton setvar int var main int main int argc,char argv return ...

C 單例模式

實現方式一 include template typename t class singleton boost noncopyable static void init private static pthread once t ponce statict value template typena...

C 單例模式

效率有點低,但是還算安全的單例模式,靜態成員實現方式 class singleton public static singleton getinstance singleton singleton getinstance unlock return m instance 內部靜態例項的懶漢模式,c ...