單例的優(yōu)缺點(diǎn)與創(chuàng)建

/*

單例模式的優(yōu)點(diǎn):

單例模式在內(nèi)存中只有一個(gè)實(shí)例,減少了內(nèi)存開(kāi)支。特別是一個(gè)對(duì)象需要頻繁的創(chuàng)建、銷(xiāo)毀時(shí),而創(chuàng)建與銷(xiāo)毀的性能又無(wú)法優(yōu)化,單例模式的優(yōu)勢(shì)就非常明顯。

單例模式只生成一個(gè)實(shí)例,減少了系統(tǒng)性能開(kāi)銷(xiāo),當(dāng)一個(gè)對(duì)象的產(chǎn)生需要比較多的資源時(shí),如讀取配置、產(chǎn)生其他依賴(lài)對(duì)象時(shí),則可以通過(guò)在應(yīng)用啟動(dòng)時(shí)直接產(chǎn)生一個(gè)單例對(duì)象,然后永久駐留內(nèi)存的方式來(lái)解決。

單例模式可以避免對(duì)資源的多重占用。

單例模式可以在系統(tǒng)設(shè)置全局的訪問(wèn)點(diǎn),優(yōu)化和共享資源訪問(wèn)。

單例模式的缺點(diǎn):

單例模式一般沒(méi)有接口,擴(kuò)展很困難,除了修改代碼基本上沒(méi)有第二種途徑實(shí)現(xiàn)。

單例模式對(duì)測(cè)試是不利的。在并行開(kāi)發(fā)環(huán)境中,如果單例模式?jīng)]有完成,是不能進(jìn)行測(cè)試的。

單例模式與單一職責(zé)原則有沖突。*/

//1.靜態(tài)變量

static ?WZTool ?* _instance;

//2.+alloc方法內(nèi)部會(huì)調(diào)用allocWithZone方法,重寫(xiě)該方法控制永遠(yuǎn)只分配一次空間

+ ?(instancetype) ?allocWithZone: ?(struct_NSZone*) ?zone

{

static ?dispatch_once_tonceToken;

dispatch_once(&onceToken, ^{

_instance = [super ?allocWithZone:zone];

});

return ?_instance;

}

//3.提供類(lèi)方法,方便外界訪問(wèn),表明身份,說(shuō)明這是一個(gè)單例,注意點(diǎn):規(guī)范share+類(lèi)名|default+類(lèi)名|類(lèi)名

+(instancetype)shareTool

{

return [[self alloc]init];

}

//4.重寫(xiě)copy和mutableCopy方法確保永遠(yuǎn)只有一個(gè)實(shí)例對(duì)象

-(id)copyWithZone:(NSZone*)zone

{

return_instance;

}

-(id)mutableCopyWithZone:(NSZone*)zone

{

return_instance;

}

最后編輯于
?著作權(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)容

  • 在開(kāi)發(fā)中經(jīng)常會(huì)用到單例設(shè)計(jì)模式,目的就是為了在程序的整個(gè)生命周期內(nèi),只會(huì)創(chuàng)建一個(gè)類(lèi)的實(shí)例對(duì)象,而且只要程序不被殺死...
    不要重名就好閱讀 597評(píng)論 0 0
  • 單例模式的作用 可以保證在程序運(yùn)行過(guò)程,一個(gè)類(lèi)只有一個(gè)實(shí)例,而且該實(shí)例易于供外界訪問(wèn) 從而方便地控制了實(shí)例個(gè)數(shù),并...
    JonesCxy閱讀 419評(píng)論 0 0
  • 填坑
    我不講道理的閱讀 164評(píng)論 0 0
  • 不沉迷過(guò)去,不妄想未來(lái),全心全意的珍惜當(dāng)下。不以物喜不以己悲,因?yàn)槊恳粋€(gè)當(dāng)下都是最好的安排。 當(dāng)嗷嗷待哺,咿咿呀呀...
    花柚豆閱讀 1,035評(píng)論 0 1
  • 在Mysql中我們常常用order by來(lái)進(jìn)行排序,使用limit來(lái)進(jìn)行分頁(yè),當(dāng)需要先排序后分頁(yè)時(shí)我們往往使用類(lèi)似...
    丘八老爺閱讀 25,540評(píng)論 6 20

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