我应该继承或使用类别

时间:2013-08-24 00:48:33

标签: ios objective-c singleton

我有一个管理从plist加载的首选项的单例。我用它多个应用程序。它包含-(BOOL)boolForKey:(NSString *)key defaultValue:(BOOL)def

等方法

所以我可以在两个不同的应用中使用该类,只需提供不同的键,例如在一个应用中:[PreferenceManager boolForKey:@"UseAlternateColors" defaultValue:NO];

但是在这个应用程序中使用-(BOOL)useAlternateColors(只返回上一行的值)这样的方法会更容易。那么我应该使用类别将此方法添加到PreferenceManager(并且只在一个应用中包含类别)或创建类似OneAppPreferenceManager的子类吗?

在这个具体的例子中,是否更好地进行子类化或使用类别?

1 个答案:

答案 0 :(得分:1)

如果您需要将新数据成员添加到派生PreferenceManager,则子类化将是更好的选择。但是,由于后备存储总是保持不变,我认为在这种特定情况下使用类别会更好。

使用类别可以让你保持单身PreferenceManager不变,以及设置它的代码段。如果您要子类化PreferenceManager,则需要对实例化单例的代码进行其他更改,以便它使用PreferenceManagerSubclass而不是原始PreferenceManager。对于某个类别,此更改是不必要的。