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...