第一次寫東西,文體形式槽點多多,歡迎指正。
單例模式是設計模式中比較簡單的乙個,學習起來比較容易理解。下面開始聊聊各種場景下的單例模式。
單例模式的定義: 乙個類有且僅有乙個例項,並且自行例項化向整個系統提供。
單例模式的要素: 1.私有的靜態的例項物件 2.私有的建構函式(保證在該類外部,無法通過new的方式來建立物件例項) 3.公有的、靜態的、訪問該例項物件的方法
單例模式分為懶漢形和餓漢式 懶漢式
一、懶漢式單例模式:
優點是:類singleton被載入時並未被分配空間,當呼叫getinstance()方法時才分配空間,節省記憶體。
缺點是:併發環境下很可能出現多個singleton例項。
1/**2
* 懶漢模式
3* 在第一次呼叫例項方法的時候才會例項化物件4*
*/5public
class
singleton
9public
static
singleton getinstance()
13return
instance;14}
1516
17 }
二、餓漢式單例模式:
缺點:靜態類被載入並分配空間,此後instance一直占用資源。
1/**2
* 餓漢模式 單例類在被編譯載入時候,就例項化乙個物件交給自己的引用3*
*/4public
class
singleton1 78
private
static singleton1 instance = new
singleton1();910
public
static
singleton1 getinstance()
1314 }
三、懶漢式執行緒安全單例模式:
1public
class
singleton
5public
static
synchronized
singleton getinstance()
9return
instance;10}
1112
13 }
三、多執行緒下的懶漢模式:
優點是:使用synchronized關鍵字避免多執行緒訪問時,出現多個singletontest例項。
缺點是:同步方法頻繁呼叫時,效率略低。
1/**2
* 多執行緒下的懶漢模式
3* 給懶漢式單例模式加鎖,避免併發帶來的錯誤,保證執行緒安全。4*
*/5public
class
singleton2
7private
static
volatile singleton2 instance = null;8
public
static
singleton2 getinstance()14}
15}16return
instance;17}
18 }
使用場景:
單例模式的優點:
在記憶體中只有乙個物件,節省記憶體空間
避免頻繁地建立銷毀物件,可以提高效能
避免對共享資源的多重占用
可以全域性訪問
C 單例模式的簡單分析
單例模式也稱為單件模式 單子模式,可能是使用最廣泛的設計模式。其意圖是保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點,該例項被所有程式模組共享。單例模式要做如下事情 1.不能通過建構函式構造,否則就能夠例項化多個。建構函式需要私有宣告 2.保證只能產生乙個例項 適用場景 1.需要生成唯一序列...
簡單論述之單例模式分析
問題 1.什麼是單例模式?單例模式是軟體設計模式中的一種,它的核心結構只包含乙個被稱為單例的特殊類,通過單例模式保證系統中乙個類只有乙個例項。對於系統中的許多類來說,只能有乙個例項。比如 windows系統資源管理器 如果不對物件唯一化,將會彈出多個視窗 1 視窗內容完全不一致 記憶體資源浪費 2 ...
單例模式的簡單demo
c 版本 餓漢模式 include using namespace std class r public static r getinstance r r instance new r 1.建構函式放在非public控制許可權下 2.保證物件始終值存在乙個 讓物件始終存在於靜態區 3.對外部提供乙個...