Come noto, secondo la regola "composizione sull'ereditarietà", dovremmo evitare di riutilizzare un metodo per ereditarietà, ma per quanto riguarda i membri della classe? Supponiamo che io abbia classi genitore e figlio come la seguente:
public class Animal{
protected String name;
protected int _id;
public String getName(){
return name;
}
public int getId(){
return _id;
}
}
public class Cat extends Animal{
}
public class Dog extends Animal{
}
e ho scoperto che sto riutilizzando il campo "name" e "_id" per ereditarietà. Dovrei mettere tutti gli attributi in una classe separata e lasciare che una classe figlia lo usi per composizione in questo modo:
public class AnimalData{
public String name;
public int _id;
}
public interface Animal{
public AnimalData getAnimalData();
}
public class Cat implements Animal{
public AnimalData animalData;
public AnimalData getAnimalData(){
return animalData;
}
}
public class Dog implements Animal{
public AnimalData animalData;
public AnimalData getAnimalData(){
return animalData;
}
}
per obbedire alla regola "composizione sull'ereditarietà"?