設計模式(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 ...