主要原则:
object
可以通过class method
创建,提供唯一标识符(无论如何)
如果具有给定标识符的object
不存在,则返回新的object
否则返回现有
class
保证只有一个具有给定标识符的object
可以存在(内部singleton
)所以要保持objects
具有唯一字段(fe id)以供将来使用,因为它们可能具有自己的状态(加载,加载等),我们可以在任何需要的地方使用它而无需重新使用-creating。
是design pattern
吗?
F.e:
Advirtisement.h
@interface Advertisment : NSObject
+ (instancetype)adWithID:(NSString *)adID;
+ (NSMutableArray *)sharedAds;
Advertisement.m
+ (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;
}