設計模式 8種方式實現單例模式

2021-10-10 21:40:20 字數 2029 閱讀 6880

1、餓漢式的兩種寫法

餓漢式的特點:在獲取單例物件之前物件就已經建立完成了。

package com.juc程式設計.volatile0;

public

class

singleeh

public static singleeh getsingleeh()*/

//2.靜態**塊

private

static

final singleeh singleeh;

private

singleeh()

static

public

static singleeh getsingleeh()

}class

test

}

2、懶漢單例的四種寫法

懶漢單例的特點:在真正需要單例的時候才建立出該物件。

package com.juc程式設計.volatile0;

public

class

singlelh

private

static singlelh singlelh;

//定義的時候不初始化

public

static singlelh getsinglelh()

return singlelh;

}}

package com.juc程式設計.volatile0;

public

class

singlelh

private

static singlelh singlelh;

public

synchronized

static singlelh getsinglelh()

return singlelh;

}}

package com.juc程式設計.volatile0;

public

class

singlelh

private

static singlelh singlelh;

public

synchronized

static singlelh getsinglelh()

}return singlelh;

}}

volatile雙重檢查機制(推薦方式)

package com.juc程式設計.volatile0;

public

class

singlelh

//volatile在此處主要的作用是保證可見性和禁止指令重排序

private

volatile

static singlelh singlelh;

public

static singlelh getsinglelh()

}}return singlelh;

}}

3、靜態內部類單例方式

靜態內部類是在被呼叫時才會被載入,這種方案實現了懶漢單例的一種思想,需要用到的時候才會去建立單例,加上jvm的特性,這種方式又實現了執行緒安全的建立單例物件。

package com.juc程式設計.volatile0;

public

class

singlestatic

private

static

class

innerclass

public

static singlestatic getsinglestatic()

}

4、列舉實現單例
package com.juc程式設計.volatile0;

/** 列舉實際上是一種多例的模式,如果我們直接定義了乙個例項就相當於是單例了

* */

public

enum singleenum

單例模式 8種實現方式

餓漢式2種 靜態常量餓漢式 靜態 塊餓漢式 懶漢式3種 執行緒不安全懶漢式 執行緒安全懶漢式 同步 塊懶漢式 還有3種 雙重檢查 靜態內部類 列舉方式 1.靜態常量餓漢式 public class singleton public static singleton getinstance 優點 實現...

8種單例設計模式

單例模式有八種方式 餓漢式 靜態常量 餓漢式 靜態 塊 懶漢式 執行緒不安全 懶漢式 執行緒安全,同步方法 懶漢式 執行緒安全,同步 塊 雙重檢查 靜態內部類 列舉 餓漢式 靜態變數 class singleton 2.本類內部建立物件例項 private final static singleto...

設計模式之單例模式的5種實現方式

1 餓漢式 執行緒安全,呼叫效率高,但是不能延時載入 public class user 其他地方通過此方法獲取單例物件 public static user getinstance 2.懶漢式 執行緒安全,呼叫效率不高,但是能延時載入 public class singletondemo2 方法同...