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