天天看點

單例模式

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

//}

//寫法二

//    @synchronized(self)

//    {

//        if (!pen) {

//            pen = [[pen alloc]init];

//        }

//寫法三

+ (pen *)sharedpen

{

    static pen *pen = nil;

    //保證裡面方法值執行一次

    static dispatch_once_t oncetoken;

    dispatch_once(&oncetoken, ^{

        pen = [[pen alloc]init];

    });

    return pen;

}

繼續閱讀