單例模式的簡單分析

2022-05-30 13:39:11 字數 1728 閱讀 6955

第一次寫東西,文體形式槽點多多,歡迎指正。

單例模式是設計模式中比較簡單的乙個,學習起來比較容易理解。下面開始聊聊各種場景下的單例模式。

單例模式的定義:     乙個類有且僅有乙個例項,並且自行例項化向整個系統提供。

單例模式的要素: 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 }

三、懶漢式執行緒安全單例模式:

1

public

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.對外部提供乙個...