23種設計模式 建立型模式 單例模式

2021-10-18 03:24:48 字數 1563 閱讀 8139

單例類只有乙個例項物件;

該單例物件必須由單例類自行建立;

單例類對外提供乙個訪問該單例的全域性訪問點。

單例模式的優點:

1.單例模式可以保證記憶體裡只有乙個例項,減少了記憶體的開銷。

2.可以避免對資源的多重占用。

3.單例模式設定全域性訪問點,可以優化和共享資源的訪問。

單例模式的缺點:

1.單例模式一般沒有介面,擴充套件困難。如果要擴充套件,則除了修改原來的**,沒有第二種途徑,違背開閉原則。

2.在併發測試中,單例模式不利於**除錯。在除錯過程中,如果單例中的**沒有執行完,也不能模擬生成乙個新的物件。

3.單例模式的功能**通常寫在乙個類中,如果功能設計不合理,則很容易違背單一職責原則。

第 1 種:懶漢式單例

public

class

lazysingleton

//private 避免類在外部被例項化

public

static

synchronized lazysingleton getinstance()

return instance;

}

第 2 種:餓漢式單例

public

class

hungrysingleton

public

static hungrysingleton getinstance()

}

第 3 種:靜態內部類

public

class

singletonmodel

private

static

class

singletonholder

public

static singletonmodel getsingletomodel()

}

第 4 種:懶漢式–雙重校驗

public

class

singletonmodel

public

static singletonmodel getsingletomodel()

}}return singletonmodel;

}}

第 5 種:列舉

public

class

singleton

public

static

enum singletonenum

public singleton getinstance()

}}

單例模式可擴充套件為有限的多例(multitcm)模式,這種模式可生成有限個例項並儲存在 arraylist 中,客戶需要時可隨機獲取,其結構圖如圖 所示。

23種設計模式之建立型模式 5 單例模式

單例設計模式可以分為 懶漢式餓漢式雙重檢測鎖 靜態內部類列舉 下面是詳細介紹 public class singleton public static singleton getinstance 優點 這種寫法比較簡單,就是在類裝載的時候就完成例項化。避免了執行緒同步問題。缺點 在類裝載的時候就完成...

設計模式 建立型模式 單例模式

類載入時建立物件 常量 class eagersingleton public static eagersingleton getinstance 延遲載入 假如在某一瞬間 執行緒a 和 執行緒b 都在呼叫getinstance 方法,此時instance物件為null值,均能通過instance ...

設計模式建立型模式 單例模式

單例模式 singletonparrten 保證乙個類只有乙個例項,並提供乙個訪問它的全域性訪問點 建立單例模式需要三方面操作 1.建立乙個物件 2.定義乙個私有構造方法 禁止外部類對其進行例項化 3.提供乙個對外訪問的方法 單例模式可以通過懶漢式和餓漢式來實現。懶漢式 執行緒不安全 懶漢式 單例模...