設計模式 一 單例模式

2021-09-29 19:59:32 字數 830 閱讀 9872

實現思路

具體實現

懶漢式–呼叫方法時初始化物件

/**

* 單例模式--懶漢式

*/public

class

lazy

//公有的提供靜類例項的方法

public

static lazy getinstance()

return instance;

}}

特點:時間換空間,呼叫時候才初始化,執行緒不安全,多執行緒情況下不是嚴格意義上的單例模式。

餓漢式–類載入就初始化物件

/**

* 單例模式--餓漢式

*/public

class

hungry

//公有的提供靜類例項的方法

public

static hungry getinstance()

}

特點:空間換時間,類載入就建立物件,沒有執行緒問題。

解決懶漢式 的執行緒安全問題

法一、getinstance()方法加synchronized 鎖 ,

執行緒安全,但由於每次都要判斷,所以效率低

法二、雙重檢查加鎖

public

class

singleton

;//公有的提供靜類例項的方法

public

static singleton getinstance()

}}return instance;

}}

第一次判斷是保證物件僅建立一次,第二次判斷是保證多執行緒情況物件僅建立一次。

執行緒安全,較法一效率高,

設計模式 一 單例模式

思路 1 如果其他程式能夠隨意用new建立該類物件,那麼就無法控制個數。因此,不讓其他程式用new建立該類的物件。2 既然不讓其他程式new該類物件,那麼該類在自己內部就要建立乙個物件,否則該類就永遠無法建立物件了。3 該類將建立的物件對外 整個系統 提供,讓其他程式獲取並使用。步驟 1 將該類中的...

設計模式(一) 單例模式

這種模式只涉及到乙個單一的類,該類負責建立自己的物件,並確保只建立乙個物件。單例只有乙個例項 單例類必須建立自己唯一的例項 單例類必須給其他物件提供這唯一的例項 由於當今的程式設計模型都是基於多執行緒方式,因此此處只介紹執行緒安全的幾種實現。第一次被呼叫時才建立物件,屬於懶載入 lazy init ...

設計模式(一) 單例模式

單例模式 保證執行記憶體中只有乙個實體的實現模式就是單例模式,最常見的有餓漢模式 懶漢模式兩種。餓漢模式 package com.madg.design.singleton public class hungry public hungry getinstance 懶漢模式 package com....