后面我將會為大家一一整理出單例模式的寫法分類
我們先了解熟悉一下什么是單例設(shè)計模式:
【單例模式說明】
【前言】
最近開始花點心思研究下設(shè)計模式悠反,主要還是讓自己寫的代碼可重用性高耀鸦、保證代碼可靠性春哨。
所謂設(shè)計模式嗤形,我找了下定義:是一套被反復(fù)使用屋吨、多數(shù)人知曉的桑逝、經(jīng)過分類編目的棘劣、代碼設(shè)計經(jīng)驗的總結(jié)。
毫無疑問楞遏,設(shè)計模式于己于他人于系統(tǒng)都是多贏的茬暇;設(shè)計模式使代碼編制真正工程化;設(shè)計模式是軟件工程的基石脈絡(luò)寡喝,如同大廈的結(jié)構(gòu)一樣糙俗。
為什么要提倡“Design Pattern(設(shè)計模式)”?
根本原因是為了代碼復(fù)用预鬓,增加可維護性巧骚。因此這次我們來學(xué)習(xí)下設(shè)計模式,最后會通過C#語言來實現(xiàn)這些設(shè)計模式作為例子格二,深刻理解其中的精髓劈彪。
【定義】
單例模式是一種常用的軟件設(shè)計模式。在它的核心結(jié)構(gòu)中只包含一個被稱為單例類的特殊類顶猜。
通過單例模式可以保證系統(tǒng)中一個類只有一個實例而且該實例易于外界訪問沧奴,從而方便對實例個數(shù)的控制并節(jié)約系統(tǒng)資源。
如果希望在系統(tǒng)中某個類的對象只能存在一個长窄,單例模式是最好的解決方案滔吠。
特點
1、 某個類只能有一個實例
2挠日、它必須自行創(chuàng)建這個實例
3疮绷、它必須自行向整個系統(tǒng)提供這個實例。
優(yōu)缺點
優(yōu)點:
【一肆资、實例控制】
單例模式會阻止其他對象實例化其自己的單例對象的副本矗愧,從而確保所有對象都訪問唯一實例。
【二、靈活性】
因為類控制了實例化過程唉韭,所以類可以靈活更改實例化過程夜涕。
缺點:
【一、開銷】
雖然數(shù)量很少属愤,但如果每次對象請求引用時都要檢查是否存在類的實例女器,將仍然需要一些開銷∽≈睿可以通過使用靜態(tài)初始化解決此問題驾胆。
【 二、可能的開發(fā)混淆】
使用單例對象(尤其在類庫中定義的對象)時贱呐,開發(fā)人員必須記住自己不能使用new關(guān)鍵字實例化對象丧诺。
因為可能無法訪問庫源代碼,因此應(yīng)用程序開發(fā)人員可能會意外發(fā)現(xiàn)自己無法直接實例化此類奄薇。
【 三驳阎、對象生存期】
不能解決刪除單個對象的問題。在提供內(nèi)存管理的語言中(例如基于.NET Framework的語言)馁蒂,
只有單例類能夠?qū)е聦嵗蝗∠峙浜峭恚驗樗瑢υ搶嵗乃接幸谩T谀承┱Z言中(如 C++)沫屡,
其他類可以刪除對象實例饵隙,但這樣會導(dǎo)致單例類中出現(xiàn)懸浮引用。