大話設計模式學習筆記(21) 單例模式

2021-08-17 17:43:35 字數 1161 閱讀 6293

原始碼git位址

確保乙個實體類在整個程式執行中只能被例項化一次。即只能有乙個該類的物件。

看到這個問題,有一定程式設計基礎的同學肯定能夠想到用單例模式。本篇部落格我就來寫一下單例模式的5種不同的實現方法。

package singleton;

public

class

singleton

}/**

* 懶漢式 所謂懶漢即只有當需要這個物件的時候才會去生成

*/class singleton1

public

static singleton1 getinstance()

return singleton1;

}}/**

* 餓漢式 所謂餓漢就是即使系統不需要類中已經迫不及待的生成物件等待系統呼叫了

*/class singleton2

public

static singleton2 getinstance()

}/**

* 考慮到多執行緒中單例 則需要考慮到鎖機制(只有飽漢式才需要考慮多執行緒情況)

* */

class singleton3

//不建議這麼寫。在低版本jdk中都不能夠保證正確性

// public static singleton3 getinstance()

// }

//// }

// return singleton3;

// }

//取而代之應該用這種簡單的寫法

public

static

synchronized singleton3 getsingleton3()

return singleton3;

}}/**

* 靜態內部類

*/class singleton4

public

static singleton4 getinstance()

private

static

class

innersingleton4

}/**

* 列舉類 極力推薦這種寫法 簡單暴力不怕反射~~~

*/enum singleton5

《大話設計模式》 筆記 單例模式

單例模式 保證乙個類僅有乙個例項,並提供乙個供訪問的全域性點。其它優點 單例模式因為是卦裝的它的唯一例項,這樣它可以嚴格地控制客戶怎樣訪問它以及何時訪問它。簡單的說就是對唯一例項的受控訪問。呼叫 以上方式存在不足。在多執行緒的程式中,多個執行緒同時訪問單例類,呼叫getinstance 方法,會有可...

大話設計模式筆記(十八) 單例模式

保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點。通常我們可以讓乙個全域性變數使得乙個物件被訪問,但它不能防止你例項化多個物件。乙個最好的辦法就是,讓類自身負責儲存它的唯一例項。這個類可以保證沒有其他例項可以建立,並且它可以提供乙個訪問該例項的方法。public class singleton...

大話設計模式 單例模式

在開發過程中,其實很多情況下,都需要用到單例模式來維持物件的唯一性。比如執行緒池 資料來源 sessionfactory等。一般的做法 懶漢式 public class myclass 宣告乙個靜態方法來返或乙個單例物件 public static myclass getinstance 但是這個會...