設計模式之單例模式學習記錄

2021-10-11 02:58:54 字數 2014 閱讀 6424

單例模式實現的方式:

1、惡漢式:類載入到記憶體後,就例項化乙個例項,jvm保障線程安全(簡單實用,推薦)。(

缺點:不管用到與否類裝載時就完成例項化)

2、懶漢式:雖然達到了初始化的目的,但是執行緒不安全

解決方式:

①、通過synchronized修飾,但是效率會下降;

②、通過synchronized修飾減少同步**塊的方式,但是效率會下降;

③、雙重校驗

3、靜態內部類方式:jvm保障線程安全(載入外部類的時候不會載入內部類)

4、列舉類的方式:不僅可以解決執行緒同步的問題,還可以防止反序列化

1、惡漢式:

public

class

singleton_001_evilman

public

static singleton_001_evilman getinstance()

private

singleton_001_evilman()

public

void

show()

public

static

void

main

(string[

] args)

}

執行結果:

2、懶漢式:

public

class

singleton_002_lazyman

// ①、通過synchronized修飾,但是效率會下降

public

static

/*synchronized*/ singleton_002_lazyman getinstance()

catch

(interruptedexception e)

instance =

newsingleton_002_lazyman()

;}}}

return instance;

}public

void

show()

public

static

void

main

(string[

] args)

}}

執行結果:

3、靜態內部類方式:

public

class

singleton_003_staticinternalclass

private

static

class

singleton_003_staticinternalclassholder

public

static singleton_003_staticinternalclass getinstance()

public

static

void

show()

public

static

void

main

(string[

] args)).

start()

;}}}

執行結果:

4、列舉類

public

enum singleton_004 ).

start()

;}}}

執行結果:

設計模式之單例模式學習

單例模式是一種物件建立型模式,使用單例模式可以保證乙個類只生成唯一的例項物件。也就是說,在整個程式空間中,該類只存在乙個例項物件。gof對單例模式的定義是 保證乙個類 只有乙個例項存在,同時提供能對該例項加以訪問的全域性訪問方法。在應用系統開發中,我們常常有以下需求 單例模式有二種實現方式,餓漢式和...

設計模式學習記錄 4 單例模式

單例模式要求實現的目標 保持乙個類有且僅有乙個例項,單例模式一般會採用延遲載入的模式 public class singlethreadedsingleton public static singlethreadsingleton getinstance return instance public...

設計模式學習記錄(一)單例模式

package designpatterns.singletonmode 單例模式 餓漢式 建立物件例項時直接初始化 用空間換時間 author fengx date 2020 12 27 public class hungrysingletonmode 2 建立該型別的私有靜態例項 private...