面試題總結 設計模式 單例模式

2021-10-10 05:36:21 字數 1284 閱讀 4890

單例模式的優缺點

在程式編寫上,一般將單例模式分為兩種,分別是餓漢式和懶漢式,

餓漢式:在類載入時就完成了初始化,所以類載入比較慢,但獲取物件的速度快。

懶漢式:在類載入時不初始化,等到第一次被使用時才初始化。

餓漢式 (可用)

public

class

singleton

public

static singleton getinstance()

}

比較常見的寫法,在類載入的時候就完成了例項化,避免了多執行緒的同步問題。當然缺點也是有的,因為類載入時就例項化了,沒有達到lazyloading (懶載入) 的效果,如果該例項沒被使用,記憶體就浪費了。

雙重檢查懶漢式 (可用,推薦)
/**

* *專案名稱:設計模式4

*類名稱:lazysingletom

*類描述:

* @author lenovo

* @data 2023年11月03日上午10:32:13

* @version

* * volatile:不能保證原子性

* synchronized:保證可見性

* dcl:禁止指令重排-->重點

* jsr-133 : 記憶體模型 保證指令重排安全性

*/public

class

lazysingletom

public

static lazysingletom getinstance()

}}return instance;

}}

對getinstance()加了鎖的處理,保證了同一時刻只能有乙個執行緒訪問並獲得例項,synchronized是修飾整個方法,

兩個執行緒a和b同時訪問靜態方法並同時執行到第乙個if判斷語句,這時執行緒a先進入同步**塊中例項化物件,結束之後執行緒b也進入同步**塊,如果沒有第二個if判斷語句,那麼執行緒b也同樣會執行例項化物件的操作了。

優點

單例類只有乙個例項,節省了記憶體資源,對於一些需要頻繁建立銷毀的物件,使用單例模式可以提高系統效能;

單例模式可以在系統設定全域性的訪問點,優化和共享資料,例如前面說的web應用的頁面計數器就可以用單例模式實現計數值的儲存。

缺點單例模式一般沒有介面,擴充套件的話除了修改**基本上沒有其他途徑。

單例設計模式 面試題

設計模式 必須對於多個程式使用同乙個配置資訊物件時,就需要保證其物件的唯一性 如何保證物件的唯一性 不允許其程式new建立物件 在該程式中建立乙個本類例項 對外提供乙個方法讓其他方法可以獲取該物件 2.步驟 私有化該 建構函式 通過new建立乙個在本類物件 定義乙個公有的方法,將建立物件返回.pub...

高頻面試題 Singleton《單例模式》

直接例項化餓漢式 簡潔直觀 列舉式 最簡潔 靜態 塊餓漢式 適合複雜例項化 懶漢式 延遲建立物件 執行緒不安全 適用於單執行緒 執行緒安全 使用於多執行緒 靜態內部類形式 適用於多執行緒 1 直接例項化餓漢式 不管你用不用 方式 public class singletoneager 2 直接例項化...

面試題總結6 設計模式

六種常見的設計模式 1 工廠模式 2 單例模式 3 策略模式 4 觀察者模式 5 迭代器模式 6 模版方法模式。1.簡單工廠方法和工廠方法的區別 c 設計模式之1 工廠模式 設計模式 工廠和原型 清晰明了的對比 簡單工廠方法,使用乙個工廠類實現建立介面,不符合開放封閉原則,因為如果新增乙個產品品類,...