Je veux généraliser un morceau répétitif de code Java pour beaucoup d'entités similaires (~ 40-50) (dans mon cas, cette pièce est l'indexation de fichiers avec ces entités).Java traitant beaucoup d'usines de béton
J'ai essayé de le refactoriser avec une méthode générique, mais, par conséquent, j'ai un constructeur de classe générique qui est apparemment interdit en Java. Pour éviter cela, j'ai mis en place un modèle d'usine abstrait et voici ce que j'ai.
public <E extends CMObject, F extends IndexedFile<E>> F indexFile(CMFactory<E, F> factory) {
F items;
ByteBuffer[] buffs;
// ...filling buffers...
items = factory.makeFile(buffs); // as I cannot do items = new F(buffs)
return items;
}
public CityFile getCities() {
return indexFile(new CityFactory());
}
public ContinentFile getContinents() {
return indexFile(new ContinentFactory());
}
// a lot of more
Cela résout un problème de création d'une instance de classe générique. Cependant, je suis maintenant confronté à la tâche de créer une usine concrète pour chaque entité qui semble être un travail monotone car ils se ressemblent tous. La question est: y a-t-il un moyen d'automatiser la création de telles usines? Ou peut-être existe-t-il un autre modèle qui peut au moins rendre une telle création moins douloureuse?
J'ai essayé d'utiliser le refactor de remplacement de méthode d'usine d'IntelliJ IDEA, mais cela ne m'a pas aidé.