單例模式

單例模式(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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章