Unity3d游戲開(kāi)發(fā)設(shè)計(jì)模式之單例設(shè)計(jì)模式

后面我將會(huì)為大家一一整理出單例模式的寫(xiě)法分類
我們先了解熟悉一下什么是單例設(shè)計(jì)模式:

【單例模式說(shuō)明】

【前言】
最近開(kāi)始花點(diǎn)心思研究下設(shè)計(jì)模式,主要還是讓自己寫(xiě)的代碼可重用性高、保證代碼可靠性。
所謂設(shè)計(jì)模式,我找了下定義:是一套被反復(fù)使用、多數(shù)人知曉的、經(jīng)過(guò)分類編目的、代碼設(shè)計(jì)經(jīng)驗(yàn)的總結(jié)。
毫無(wú)疑問(wèn),設(shè)計(jì)模式于己于他人于系統(tǒng)都是多贏的;設(shè)計(jì)模式使代碼編制真正工程化;設(shè)計(jì)模式是軟件工程的基石脈絡(luò),如同大廈的結(jié)構(gòu)一樣。
為什么要提倡“Design Pattern(設(shè)計(jì)模式)”?
根本原因是為了代碼復(fù)用,增加可維護(hù)性。因此這次我們來(lái)學(xué)習(xí)下設(shè)計(jì)模式,最后會(huì)通過(guò)C#語(yǔ)言來(lái)實(shí)現(xiàn)這些設(shè)計(jì)模式作為例子,深刻理解其中的精髓。

【定義】
單例模式是一種常用的軟件設(shè)計(jì)模式。在它的核心結(jié)構(gòu)中只包含一個(gè)被稱為單例類的特殊類。
通過(guò)單例模式可以保證系統(tǒng)中一個(gè)類只有一個(gè)實(shí)例而且該實(shí)例易于外界訪問(wèn),從而方便對(duì)實(shí)例個(gè)數(shù)的控制并節(jié)約系統(tǒng)資源。
如果希望在系統(tǒng)中某個(gè)類的對(duì)象只能存在一個(gè),單例模式是最好的解決方案。
特點(diǎn)
1、 某個(gè)類只能有一個(gè)實(shí)例
2、它必須自行創(chuàng)建這個(gè)實(shí)例
3、它必須自行向整個(gè)系統(tǒng)提供這個(gè)實(shí)例。
優(yōu)缺點(diǎn)
優(yōu)點(diǎn):
【一、實(shí)例控制】
單例模式會(huì)阻止其他對(duì)象實(shí)例化其自己的單例對(duì)象的副本,從而確保所有對(duì)象都訪問(wèn)唯一實(shí)例。
【二、靈活性】
因?yàn)轭惪刂屏藢?shí)例化過(guò)程,所以類可以靈活更改實(shí)例化過(guò)程。
缺點(diǎn):
【一、開(kāi)銷】
雖然數(shù)量很少,但如果每次對(duì)象請(qǐng)求引用時(shí)都要檢查是否存在類的實(shí)例,將仍然需要一些開(kāi)銷??梢酝ㄟ^(guò)使用靜態(tài)初始化解決此問(wèn)題。
【 二、可能的開(kāi)發(fā)混淆】
使用單例對(duì)象(尤其在類庫(kù)中定義的對(duì)象)時(shí),開(kāi)發(fā)人員必須記住自己不能使用new關(guān)鍵字實(shí)例化對(duì)象。
因?yàn)榭赡軣o(wú)法訪問(wèn)庫(kù)源代碼,因此應(yīng)用程序開(kāi)發(fā)人員可能會(huì)意外發(fā)現(xiàn)自己無(wú)法直接實(shí)例化此類。
【 三、對(duì)象生存期】
不能解決刪除單個(gè)對(duì)象的問(wèn)題。在提供內(nèi)存管理的語(yǔ)言中(例如基于.NET Framework的語(yǔ)言),
只有單例類能夠?qū)е聦?shí)例被取消分配,因?yàn)樗瑢?duì)該實(shí)例的私有引用。在某些語(yǔ)言中(如 C++),
其他類可以刪除對(duì)象實(shí)例,但這樣會(huì)導(dǎo)致單例類中出現(xiàn)懸浮引用。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容