單例模式的意思就是只有一個實例。單例模式確保某一個類只有一個實例,而且自行實例化并向整個系統(tǒng)提供這個實例。這個類稱為單例類。
1.單例模式的要點:
顯然單例模式的要點有三個;一是某個類只能有一個實例;二是它必須自行創(chuàng)建這個實例;三是它必須自行向整個系統(tǒng)提供這個實例。
2.單例模式的優(yōu)點:
1.實例控制:Singleton 會阻止其他對象實例化其自己的 Singleton 對象的副本,從而確保所有對象都訪問唯一實例。
2.靈活性:因為類控制了實例化過程,所以類可以更加靈活修改實例化過程
伽師網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)公司等網(wǎng)站項目制作,到程序開發(fā),運營維護。成都創(chuàng)新互聯(lián)成立與2013年到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)。
#import@interface CLPen : NSObject + (CLPen *)sharedCLPen; @end #import "CLPen.h" @implementation CLPen + (CLPen *)sharedCLPen { 寫法一 (錯誤的) + (CLPen *)sharedCLPen { static CLPen *pen = nil; if (pen == nil) { pen = [[CLPen alloc] init]; } return pen; } 寫法二 (錯誤的) + (CLPen *)sharedCLPen { static CLPen *pen = nil; @synchronized(self){ if (pen == nil) { pen = [[CLPen alloc] init]; } } return pen; } 一般選擇第三種書寫方式 static CLPen *pen = nil;//第一步:為單例對象實現(xiàn)一個靜態(tài)實例,并初始化,然后設(shè)置成nil, //保證里面的方法只執(zhí)行一次 static dispatch_once_t onceToken;//第二步:實例構(gòu)造檢查靜態(tài)實例是否為nil dispatch_once(&onceToken, ^{ pen = [[CLPen alloc] init]; }); return pen; }