單例模式三種模式,餓漢(飢漢)、飽漢(懶漢)、雙重鎖模式
今天看某培訓機構提供面試題中設計模式部分,對飽漢和餓漢比較感興趣,就搜了一下,然後誤人子弟,然後就覺得有必要記錄一下
宣告:本人沒有看過設計模式的書籍,只是根據概念對比的看了一些部落格;
經典寫法:懶漢和餓漢的最大區別就在於建立物件時候是否例項化;有new就是餓漢,反之就是懶漢,跟加不加synchronized ,沒有關係懶漢:
public class SingleTon {
private static SingleTon instance;
private SingleTon() {
}
public static SingleTon getInstance() {
懶漢安全寫法
public class SingleTon {
// 靜態例項變數加上volatile private static volatile SingleTon instance;
// 私有化建構函式 private SingleTon() {
}
// 雙重檢查鎖 public static SingleTon getInstance() {
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
餓漢模式
public class SingleTon {
// 靜態例項變數,直接初始化
private static SingleTon instance = new SingleTon();
// 私有化建構函式
private SingleTon() {
}
// 靜態public方法,向整個應用提供單例獲取方式
public static SingleTon getInstance() {
return instance;
}
}
================================================================================================================================================