我想设置一个单例协议。实现该协议的类将支持 +(id) 单例
显然我会实现那个单例方法。一次又一次地重新实施同样的事情是一种浪费。
我可以使用继承,我已经知道该怎么做,但是一个类只能有一个父级,使用继承听起来有点矫枉过正。基本上我只会将单例存储在 NSMutableDictionary 中,其键是相应类的 NSStringFromClass。我想知道为什么没有人这样做。这与我在 Objective-c 中使用的技术相同,我们如何拥有一个范围是整个类的变量(但不包括子类)
#import "BGSuperSingleton.h"
static NSMutableDictionary * allTheSingletons;
@implementation BGSuperSingleton
+(id) singleton1
{
NSString* className = NSStringFromClass([self class]);
id result = allTheSingletons[className];
if (result==nil)
{
result = [[[self class] alloc]init];
allTheSingletons[className]=result;
}
return result;
}
@end
我可以使用类别。但是,类别几乎适用于任何课程。我可以限制我所有的单例都属于 SuperSingleton 类,但这会破坏目的
我可以使用协议。现在这太棒了。但是,协议没有实现。协议只声明一个类可以做的方法。
所以我该怎么做?