1

Shared Instance

| 12/03/2011
寫一些簡單的東西好了,這邊簡單的介紹一個 Design Pattern:Singleton。
簡單一點的說法,就是「分享實體(Shared Instance)」。

這個 Design Pattern 是用來確保程式中某些物件實體只能有一個、或是數個,不應該被重複性的建立。打個比方來說,程式本身的實體、系統服務(資源)的實體,都是很好的例子。為了要達到這個目的,我們會為該物件建立單一的存取窗口:

@interface MyObj : NSObject
+ (id)sharedInstance;
@end


@implementation MyObj


+ (id)sharedInstance
{
    // 物件實體靜態存在
    static id master = nil;
    // 若實體尚未被建立,在此建立一個
    if (!master) {
         master = [MyObj new];
    }
    return master;
}


@end

如此一來,我們就只能使用 sharedInstance 來存取該實體,並且在該程式之中,任何的介面都會存取到相同的實體。

MyObj *obj1 = [MyObj sharedInstance];
MyObj *obj2 = [MyObj sharedInstance];


// obj1 == obj2

在 Cocoa 中最常用到的實例莫過於:

[NSApplication sharedApplication];
[NSBundle mainBundle];
[NSNotificationCenter defaultCenter];
[NSUserDefault standardUserDefault];