(九)單例模式的幾種實現方式

2021-09-28 17:18:43 字數 994 閱讀 4525

一、懶漢式(執行緒不安全)

懶漢的意思就是我不生成例項,到使用時才生成第乙個例項。

實現簡單,但因為取唯一例項時未加鎖,因此不支援多執行緒。

public clsaa singleton

}

二、懶漢式(執行緒安全)

對getinstance函式進行加鎖。但此方法效率低下,因為常見情況下都不需要同步。

public class singleton

public static synchronized singleton getinstance()

}

三、餓漢式

在呼叫獲取例項函式前就將例項初始化了,不會出現懶漢式中生成多個例項的情況,因此是執行緒安全的。

public class singleton   

public static singleton getinstance()

}

四、雙重檢測鎖

多執行緒下安全且能保持高效能

public class singleton   

public static singleton getsingleton()

} }

return singleton;

} }

為什麼進行了雙重檢測?

五、登記式/靜態內部類

相當於對餓漢式的改進,餓漢式在類載入時就建立物件。在類內部建乙個靜態的私有成員類,負責維護唯一的物件。這裡登記式實現方法即通過map或list將類儲存起來,靜態內部類實現方法就是通過靜態私有成員維護。

public class singletonclass 

private singletonclass()

public static singletonclass getinstance()

}————————————————

六、列舉

單例模式實現的幾種方式

單例模式三個主要特點 1 構造方法私有化 2 例項化的變數引用私有化 3 獲取例項的方法共有。package com.ctl.singleton 懶漢式單例 該模式的特點是類載入時沒有生成單例,只有當第一次呼叫 getlnstance 方法時才去建立這個單例 注意 如果編寫的是多執行緒程式,則不要刪...

單例模式的幾種實現方式

單例模式莫過於是我們最常用的設計模式之一了,它的優缺點就是 優也單例,缺也單例 當然應用它方面優點還是較多些的,所以下面我們看看,常用的幾種實現方式有哪些吧。這種是最基本的實現方式,最大的問題就是不支援多執行緒,由於沒有加鎖,嚴格上並不算單例模式。public class singleton pub...

單例模式的幾種實現方式

public class person private person person new person 出現stackoverflowerror錯誤 因為建立物件需要呼叫構造方法執行 構造方法執行在棧記憶體中 每次建立物件需要載入屬性 該屬性又是當前類物件 造成無限迴圈建立物件 最終棧記憶體壓滿 ...