Java設計模式1 單例設計模式

2021-08-13 23:20:56 字數 1747 閱讀 8253

1、為什麼設計成單例模式?

保證類在記憶體中只有乙個物件。例如:(runtime類)。

在計算機系統中,執行緒池、快取、日誌物件、對話方塊、印表機、顯示卡的驅動程式物件常被設計成單例。

2、單例模式設計的3種方式:

1、餓漢式(推薦使用)
public

class singleton

// 2,建立本類物件,定義static是為了可以使用 類名.方法 呼叫,定義private是為了不讓其他類訪問修改。

private

static singleton s = new singleton();

// 3,對外提供公共的訪問方法,定義static可以使用 類名.方法 呼叫,定義public為了讓其他類呼叫。

public

static singleton getinstance()

public

static

void

print()

}注意:餓漢式在類建立的同時就已經建立好乙個靜態的物件供系統使用,以後不再改變,所以天生是執行緒安全的。

2、懶漢式(存在多執行緒訪問問題,不建議使用)
public

class singleton

//2,建立本類物件,定義static是為了可以使用 類名.方法 呼叫,定義private是為了不讓其他類訪問修改。

private

static singleton s = null;

//3,呼叫的時候判斷。

public

static singleton getinstance()

return s;

}public

static

void

print()

}

注意:如果你想使用餓漢式,又想執行緒同步,可以加上同步鎖。

例如:

//在方法上加同步鎖

public

static

synchronized singleton getinstance()

return s;

}//或者,這樣雙重檢查鎖定

public

static singleton getinstance() }}

return s;

}

3、使用final修飾
class singleton 

//final是最終的意思,被final修飾的變數不可以被更改

public

static

final singleton s = new singleton();

}備註:其實這種方式和餓漢式類似,都是開始就建立了乙個物件例項

3、餓漢式和懶漢式區別:

餓漢式優點:

天生就是執行緒安全的

在第一次呼叫時速度也會更快,因為其資源已經初始化完成

餓漢式缺點:

會佔據一定的記憶體

懶漢式優點:

會節省一點記憶體

懶漢式缺點:

執行緒不安全,如果加同步syncronized的也會影響效能

第一次使用的時候才new,會出現一些載入延遲,特別是需要載入的資源比較多的時候

Java設計模式(1) 單例模式

singleton是一種建立型模式,指某個類採用singleton模式,則在這個類被建立後,只可能產生乙個例項供外部訪問,並提供乙個全域性的訪問點。核心知識點 1.將採用單例設計模式的類的構造方法私有化 採用private修飾 2.在其內部產生該類的例項話物件,並將其封裝成private stati...

java設計模式 單例設計模式

public class main 餓漢式 空間換時間 多執行緒訪問不會建立多個物件 author admin class singleton 2建立本類物件 private static singleton s new singleton 3對外提供公共的訪問方法 public static si...

設計模式(1) 單例設計模式

單例設計模式 定義 確保乙個類只有乙個例項,並且自行例項化,並向整個系統提供這個例項。餓漢式 class single 通過該方法獲得例項物件 public single getinstance 類中其他方法盡量使用static public static void say 通過定義乙個私有訪問許可...