У меня есть три класса, которые очень похожи, за исключением одного метода. Поэтому я решил поместить все их функциональные возможности в абстрактный суперкласс. Однако когда дело доходит до создания экземпляров этих классов, я не понимаю, как реализовать то, что мне кажется «очевидным» или «элегантным» подходом. Их конструкторы практически идентичны, и мне нужно несколько экземпляров каждого, поэтому я хотел сделать что-то вроде следующего:
private SubclassA[] subclassA_array, SubclassB[] subclassB_array, SubclassC[] subclassC_array;
subclassA_array = new SubclassA[getNumInstancesOfClassANeeded()]
subclassB_array = new SubclassA[getNumInstancesOfClassBNeeded()]
subclassC_array = new SubclassA[getNumInstancesOfClassCNeeded()]
// might have my syntax wrong here; array of the three subclass arrays
private Superclass[][] superArray = new Superclass[][3];
superArray[0] = subclassA_array;
superArray[1] = subclassA_array;
superArray[2] = subclassA_array;
for ( Superclass[] array: superArray )
for(int i = 0; i< array.length; i++)
// array[i] = new..... what goes here?
}
}
Как мне найти подходящий класс для конструирования в этом самом внутреннем цикле? Действительно ли это действительно странный способ решения проблемы; я пропустил что-то более очевидное? Должен ли я просто сказать "к черту это!" и просто есть три отдельных цикла?