單例模式,是一種常用的軟體設計模式。在它的核心結構中只包含乙個被稱為單例的特殊類。通過單例模式可以保證系統中乙個類只有乙個例項。即乙個類只有乙個物件例項。
定義乙個單例類,使用類的私有指標變數指向類的唯一例項,並且使用乙個共有的靜態方法獲取該例項。
懶漢模式:即第一次呼叫該類的例項的時候才產生乙個新的該類例項,並在以後僅返回此例項。
標頭檔案singletonpattern.h
#ifndef singletonpattern_h
#define singletonpattern_h
class singletonpattern
;#endif // singletonpattern_h
原始檔singletonpattern.cpp
#include "singletonpattern.h"
singletonpattern* singletonpattern::_mission_manager = nullptr; //懶漢
singletonpattern::singletonpattern()
singletonpattern::~singletonpattern()
singletonpattern* singletonpattern::instance()
return
instance;
}
餓漢模式: 無論是否呼叫該類的例項,在程式一開始就產生乙個例項,並在以後僅返回此例項。
singletonpattern* singletonpattern::_mission_manager
=new singletonpattern(); //餓漢模式
上面介紹的簡單實現方式沒有考慮到多執行緒的安全問題。使用double-check來保證執行緒安全 thread safety,但是如果處理大量資料的時候,該鎖成為嚴重的效能瓶頸。
singletonpattern* singletonpattern::instance()
unlock();
}return instance;
}
雙重鎖的目的是減小鎖的粒度,只鎖住new語句。 設計模式之一單例模式
單例模式就是類別只有乙個例項,每次在必得類呼叫這個類的例項,都是同乙個例項。通過單例模式可以保證系統中乙個類只有乙個例項而且該例項易於外界訪問,從而方便對例項個數的控制並節約系統資源。如果希望在系統中某個類的物件只能存在乙個,單例模式是最好的解決方案。如印表機 顯示卡等等這些系統資源。如果做andr...
設計模式之一 單例模式
一.什麼是單例模式 某個類同時保留乙個物件,不希望有更多物件,此時,我們則應考慮單例模式的設計。二.單例模式的特點 1.單例模式只能有乙個例項。2.單例類必須建立自己的唯一例項。3.單例類必須向其他物件提供這一例項。三.單例模式vs靜態類 在知道了什麼是單例模式後,我想你一定會想到靜態類,既然只使用...
設計模式之一 單例模式
好久不寫部落格,最近都在複習,心血來潮,寫一篇關於設計模式 單例模式的部落格。我們知道,對於c oop思想,我們怎麼可以說不熟悉設計模式,接下來就簡單地介紹一下單例模式。在我們的設計當中經常要保證系統中,應用該模式的類乙個類只有乙個例項。即乙個類只有乙個物件例項。思考一下,什麼時候建構函式不能手動呼...