你需要記住的單例模式

2021-09-24 17:46:24 字數 870 閱讀 8322

單例模式有很多種實現方式,網上資料也有很多,什麼列舉型、餓漢型、懶漢型、靜態內部型別等等,實現方式很多,不便於記憶。我總結了一下,你需要記住兩種型別,即執行緒安全型和非執行緒安全型。如有瑕疵,望不吝賜教。

執行緒安全型:

public class singletonthreadsafe 

public static singletonthreadsafe getinstance()

//靜態內部類

private static class singletonholder

}

非執行緒安全型:

public class singletonthreadunsafe 

public static singletonthreadunsafe getinstance()

return unsafe;

}}

這兩種方式都是懶載入式的,只有在真正使用的時候才會初始化instance,對系統友好。對於非執行緒安全的單例是懶載入的比較好理解,但上面那種執行緒安全的單例是懶載入的可能有疑問,可以通過下面的例子驗證:

public class singletonthreadsafe 

public static singletonthreadsafe getinstance()

public static void printstring()

//靜態內部類

private static class singletonholder

}public static void main(string args)

}

分別執行main函式內的方法,即可看到效果$_$。

《單例模式》你需要注意的問題

單例模式大家都很熟悉,但是使用過程中,稍微不注意就會出現大問題。單例模式 該類在整個系統生命週期中有且只有乙個例項。單例的建立 注意問題 建構函式 私有化 保證 例項化該類通過統一的介面 提供乙個統一的介面獲取類的例項 保證執行緒同步 例如 public class commonquery obje...

單例模式需要釋放嗎

單例模式需要釋放嗎 1 這個問題我也想過,既然是單例,就是不管呼叫者什麼時候呼叫,你必須馬上給他返回乙個例項,所以,在整個程式的生命週期裡,他一直存在,所以不釋放也沒關係的,建議開始用arc,我也才開始用沒多久,感覺比之前的寫 爽多了 2 記得我還是個懵懂少年的時候查過這個問題.sof 告訴我 si...

Python 需要單例模式嗎

python真的需要去實現單例模式嗎?不需要。因為,python有模組 module 最pythonic的單例典範。模組在乙個應用程式中只有乙份,本身就是單例的,將你所需要的屬性和方法,直接暴露在模組中變成模組的全域性變數和方法即可!some module.py class singletoncla...