Ios 是设计模式:创建标识符为的对象,还是返回(如果已经存在)?
主要原则: 通过提供唯一标识符,可以通过类方法创建对象 若具有给定标识符的对象不存在,则返回新对象,否则返回现有对象 类保证只有一个具有给定标识符的对象可以存在某种内部单例 所以,保持对象具有唯一的字段f.e id以备将来使用的要点是,因为它们可能有自己的状态f.e加载,加载等等,我们可以在任何需要的地方使用它,而无需重新创建 是设计模式吗 F.e.: 建议 广告 <有些人也会认为一个工厂本身并不构成一个模式< /P>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
@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;
}