Ios 是设计模式:创建标识符为的对象,还是返回(如果已经存在)?

Ios 是设计模式:创建标识符为的对象,还是返回(如果已经存在)?,ios,objective-c,oop,design-patterns,Ios,Objective C,Oop,Design Patterns,主要原则: 通过提供唯一标识符,可以通过类方法创建对象 若具有给定标识符的对象不存在,则返回新对象,否则返回现有对象 类保证只有一个具有给定标识符的对象可以存在某种内部单例 所以,保持对象具有唯一的字段f.e id以备将来使用的要点是,因为它们可能有自己的状态f.e加载,加载等等,我们可以在任何需要的地方使用它,而无需重新创建 是设计模式吗 F.e.: 建议 广告 @interface Advertisment : NSObject + (instancetype)adWithID:(NSS

主要原则:

通过提供唯一标识符,可以通过类方法创建对象

若具有给定标识符的对象不存在,则返回新对象,否则返回现有对象

类保证只有一个具有给定标识符的对象可以存在某种内部单例 所以,保持对象具有唯一的字段f.e id以备将来使用的要点是,因为它们可能有自己的状态f.e加载,加载等等,我们可以在任何需要的地方使用它,而无需重新创建

是设计模式吗

F.e.:

建议

广告

<有些人也会认为一个工厂本身并不构成一个模式< /P>
@interface Advertisment : NSObject

+ (instancetype)adWithID:(NSString *)adID;    
+ (NSMutableArray *)sharedAds;
+ (instancetype)adWithID:(NSString *)adID {

    NSMutableArray *ads = [[self class] sharedAds];
        // Look for existing ad based on the id
        Advertisement *returnableAd = nil;
        for (Advertisement *currentAd in ads) {
            if ([currentAd.adID isEqualToString:adID]) {
                returnableAd = currentAd;
                break;
            }
        }
        // Create a new ad instance for this id if one doesn't already exist.
        if (!returnableAd) {
            returnableAd = [[[self class] alloc] initWithID:adID];                                                                  
            [ads addObject:returnableAd];
        }
        return returnableAd;
    }
}

+ (NSMutableArray *)sharedAds
{
    static NSMutableArray *sharedAds;

    if (!sharedAds) {
        sharedAds = [NSMutableArray array];
    }
    return sharedAds;
}