單例模式(Singleton Pattern):確保某一個類只有一個實例,而且自行實例化並向整個系統提供這個實例,這個類稱爲單例類,它提供全局訪問的方法。單例模式是一種對象創建型模式。
單例模式有三個要點:一是某個類只能有一個實例;二是它必須自行創建這個實例;三是它必須自行向整個系統提供這個實例。
單例模式是結構最簡單的設計模式一,在它的核心結構中只包含一個被稱爲單例類的特殊類。
@interface Pen : NSObject
+ (Pen *)sharedPen;
@end
#import "Pen.h"
@implementation Pen
//寫法一(錯誤)
//+ (Pen *)sharedPen
//{
// static Pen *pen = nil;
// if (!pen) {
// pen = [[Pen alloc]init];
// }
// return pen;
//}
//寫法二
//+ (Pen *)sharedPen
//{
// static Pen *pen = nil;
// @synchronized(self)
// {
// if (!pen) {
// pen = [[Pen alloc]init];
// }
// }
// return pen;
//}
//寫法三
+ (Pen *)sharedPen
{
static Pen *pen = nil;
//保證裏面方法值執行一次
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
pen = [[Pen alloc]init];
});
return pen;
}
@end