我有一个管理从plist加载的首选项的单例。我用它多个应用程序。它包含-(BOOL)boolForKey:(NSString *)key defaultValue:(BOOL)def
所以我可以在两个不同的应用中使用该类,只需提供不同的键,例如在一个应用中:[PreferenceManager boolForKey:@"UseAlternateColors" defaultValue:NO];
但是在这个应用程序中使用-(BOOL)useAlternateColors
(只返回上一行的值)这样的方法会更容易。那么我应该使用类别将此方法添加到PreferenceManager
(并且只在一个应用中包含类别)或创建类似OneAppPreferenceManager
的子类吗?
在这个具体的例子中,是否更好地进行子类化或使用类别?
答案 0 :(得分:1)
如果您需要将新数据成员添加到派生PreferenceManager
,则子类化将是更好的选择。但是,由于后备存储总是保持不变,我认为在这种特定情况下使用类别会更好。
使用类别可以让你保持单身PreferenceManager
不变,以及设置它的代码段。如果您要子类化PreferenceManager
,则需要对实例化单例的代码进行其他更改,以便它使用PreferenceManagerSubclass
而不是原始PreferenceManager
。对于某个类别,此更改是不必要的。