您好,登錄后才能下訂單哦!
單例模式的意思就是只有一個實例。單例模式確保某一個類只有一個實例,而且自行實例化并向整個系統提供這個實例。這個類稱為單例類。
1.單例模式的要點:
顯然單例模式的要點有三個;一是某個類只能有一個實例;二是它必須自行創建這個實例;三是它必須自行向整個系統提供這個實例。
2.單例模式的優點:
1.實例控制:Singleton 會阻止其他對象實例化其自己的 Singleton 對象的副本,從而確保所有對象都訪問唯一實例。
2.靈活性:因為類控制了實例化過程,所以類可以更加靈活修改實例化過程
#import <Foundation/Foundation.h> @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;//第一步:為單例對象實現一個靜態實例,并初始化,然后設置成nil, //保證里面的方法只執行一次 static dispatch_once_t onceToken;//第二步:實例構造檢查靜態實例是否為nil dispatch_once(&onceToken, ^{ pen = [[CLPen alloc] init]; }); return pen; }
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。