Java高階工程師常見面試題(九) 設計模式

2021-09-24 17:04:56 字數 1412 閱讀 5378

1. 單例模式:飽漢、餓漢。以及餓漢中的延遲載入,雙重檢查

1)餓漢模式:

//餓漢模式,很餓很著急,所以類載入時即建立例項物件

public class singleton1 

public static singleton1 getinstance()

}

2)飽漢模式:

public class singleton2 

public static synchronized singleton2 getinstance()

}

3)雙重鎖模式:

//飽漢模式的雙重鎖模式,提高效率

public class singleton3 

public static singleton3 getinstance()}}

return singleton;

}}

幾種模式的比較:

1、餓漢模式是執行緒安全的,因為例項物件在類載入過程中就會被建立,在getinstance()方法中只是直接返回物件引用。之所以被稱為「餓漢」,是因為這種模式建立例項物件比較「急」,真的是餓壞了.

好處:簡單明瞭,無需關注執行緒安全問題。

缺點:如果在乙個大環境下使用了過多的餓漢單例,則會生產出過多的例項物件,無論你是否要使用他們。

2、飽漢模式不是執行緒安全的,因為是在需要的時候才會產生例項物件,生產之前會判斷物件引用是否為空,這裡,如果多個執行緒同時進入判斷,就會生成多個例項物件,這是不符合單例的思想的。所以飽漢模式為了保證執行緒安全,就用synchronized關鍵字標識了方法。之所以被稱為「飽漢」,因為它很飽,不急著生產例項,在需要的時候才會生產。

好處:延時載入,用的時候才會生產物件。

缺點:需要保證同步,付出效率的代價。

3、雙重鎖模式,是飽漢模式的優化,進行雙重判斷,當已經建立過例項物件後就無需加鎖,提高效率。也是一種推薦使用的方式。

2. 工廠模式、裝飾者模式、觀察者模式。

參考:《設計模式(四)-工廠模式(factory method pattern/factory pattern)——將例項的生成交給子類》

《設計模式(十二)-裝飾器模式(decorator pattern)——裝飾邊框與被飾物的一致性》

《設計模式(十七)-觀察者模式(observer pattern)——傳送狀態變化通知》

3. 工廠方法模式的優點(低耦合、高內聚,開放封閉原則)

參考:《 設計模式(四)-工廠模式(factory method pattern/factory pattern)——將例項的生成交給子類》

面試題總結 JAVA高階工程師

三大框架方面問題 1 spring 事務的隔離性,並說說每個隔離性的區別 解答 spring事務詳解 2 spring事務的傳播行為,並說說每個傳播行為的區別 解答 spring事務詳解 3 hibernate跟mybatis ibatis 的區別,為什麼選擇?解答 hibernate與mybati...

ios開發工程師常見面試題彙總

經過本人最近的面試和對面試資料的一些彙總,準備記錄這些面試題,以便ios開發工程師找工作複習之用,本人希望有面試經驗的同學能和我同時完成這個模組,先出面試題,然後會放出答案。1.object c的類可以多重繼承麼?可以實現多個介面麼?category是什麼?重寫乙個類的方式用繼承好還是分類好?為什麼...

嵌入式工程師常見面試題

封裝乙個用於payload傳出的結構體,參考 typedef struct attribute packed spacketheader t 申請一段記憶體,結構體指標為其賦值,計算cs 將這個包模擬傳輸到另乙個裝置 函式代替 還原成結構體 計算這個結構體的cs,看和包內的cs是否一致 includ...