Disons que j'ai beaucoup de classes similaires (des unités dans un RTS dans cet exemple), c'est-à-dire que la classe Unit
et les sous-classes UnitA
, UnitB
, UnitC
etc.
Toutes les classes Unit ont le constructeur suivant (y compris Unit)
public class UnitX {
public UnitX(FileReader fr) {
...read parameters for constructing the unit...
}
}
Mon fichier contenant les paramètres a la forme
UnitX params
UnitY params
....
et la création d'une liste de toutes les unités d'un fichier se ferait par une boucle de type "while".
Class[] params = {FileReader.class};
while(fr has more to read) {
String unitType = fr.getString();
Unit u = (Unit)
java.lang.reflect.Constructor constr = Class.forName(unitType).getConstructor(params);
Unit u = (Unit)constr.newInstance(new Object[]{fr});
list.add(u);
}
Je me suis rendu compte que j'utilise très souvent ce modèle lorsque je crée des objets à partir de fichiers. Ma question est la suivante : est-ce un mauvais modèle ? Existe-t-il une meilleure façon de procéder ?