2012-12-04 18 views
1

我正在爲Objective C做這件事,但這是各種常見語言中的常見行爲。靜態變量和方法的繼承模型

我知道,靜態變量或方法不能被繼承到子類,但是我想知道這是做以下的最佳方法:

我有幾個類(如10)具有以下基本型號:

static id A 

@interface MyClass 

+ (void) doSomethingWithA; 

@end 


@implementation MyClass 
    + (void) doSomethingWithA { 
     [A doSomething]; 
     [A doOtherThing]; 
     //do more things 
    } 

@end 

的代碼是完全對所有的類相同,但這些方法是靜態的(我只希望有一個以每一類的一個實例),那麼我不能使用子類來避免代碼重複。

我真的想避免複製和粘貼這麼多的代碼。

這種情況下的最佳做法是什麼?

+0

使用繼承方便嗎?考慮繼承的組件方法 - 移動所有使用靜態的邏輯來分離組件類並將其附加到類中。 – nikita

回答

0

爲什麼不使用實例方法,使用繼承和您需要的所有東西,並創建靜態實例(例如singleton)來調用它們?

+0

因爲單例使用的是一個Static實例,如上所述,它會返回相同的問題。 – htafoya

+0

當你可以用10個方法編寫10個類時,你可以有10個實例使用靜態訪問器,但是你不必編寫代碼10次,你可以使用繼承。 –

+0

好吧我猜這是我能達到的最乾淨的解決方案。 – htafoya