單例模式的意思就是只有一個(gè)實(shí)例。單例模式確保某一個(gè)類只有一個(gè)實(shí)例,而且自行實(shí)例化并向整個(gè)系統(tǒng)提供這個(gè)實(shí)例。這個(gè)類稱為單例類。
1.單例模式的要點(diǎn):
顯然單例模式的要點(diǎn)有三個(gè);一是某個(gè)類只能有一個(gè)實(shí)例;二是它必須自行創(chuàng)建這個(gè)實(shí)例;三是它必須自行向整個(gè)系統(tǒng)提供這個(gè)實(shí)例。
2.單例模式的優(yōu)點(diǎn):
1.實(shí)例控制:Singleton 會(huì)阻止其他對(duì)象實(shí)例化其自己的 Singleton 對(duì)象的副本,從而確保所有對(duì)象都訪問(wèn)唯一實(shí)例。
2.靈活性:因?yàn)轭惪刂屏藢?shí)例化過(guò)程,所以類可以更加靈活修改實(shí)例化過(guò)程
IOS中的單例模式
在objective-c中要實(shí)現(xiàn)一個(gè)單例類,至少需要做以下四個(gè)步驟:
1、為單例對(duì)象實(shí)現(xiàn)一個(gè)靜態(tài)實(shí)例,并初始化,然后設(shè)置成nil,
2、實(shí)現(xiàn)一個(gè)實(shí)例構(gòu)造方法檢查上面聲明的靜態(tài)實(shí)例是否為nil,如果是則新建并返回一個(gè)本類的實(shí)例,
3、重寫allocWithZone方法,用來(lái)保證其他人直接使用alloc和init試圖獲得一個(gè)新實(shí)力的時(shí)候不產(chǎn)生一個(gè)新實(shí)例,
4、適當(dāng)實(shí)現(xiàn)allocWitheZone,copyWithZone,release和autorelease。
單例模式需要達(dá)到的目的
1.封裝一個(gè)共享的資源
2.提供一個(gè)固定的實(shí)例創(chuàng)建方法
3.提供一個(gè)標(biāo)準(zhǔn)的實(shí)例訪問(wèn)接口