J'ai une classe abstraite avec une seule méthode abstraite; et un certain nombre de classes d'implémentation (environ 6).Manière élégante d'implémenter la classe abstraite
La méthode renvoie un objet qui "nécessite" deux paramètres.
Cependant, dans certains cas, un seul des deux paramètres est requis.
Y a-t-il une manière élégante de mettre en application ce cas? (Au lieu de retour ce paramètre vide)
public class NormResult {
protected List<String> normWords;
protected List<String> unNormWords;
public NormResult(List<String> normWords,List<String> unNormWords) {
this.normWords = normWords;
this.unNormWords = unNormWords;
}
public NormResult(List<String> normWords) {
this.normWords = normWords;
this.unNormWords = Collections.emptyList();
}
}
public abstract class AbstractNormalizer {
protected abstract List<NormResult> doNorm();
}
public class FirstNormImpl extends AbstractNormalizer {
protected List<NormResult> doNorm() {
List<String> normWords = new ArrayList<>(5);
List<String> unNormWords = new ArrayList<>(7);
NormResult result = new NormResult(normWords, unNormWords);
return result;
}
}
public class SecondNormImpl extends AbstractNormalizer {
protected List<NormResult> doNorm() {
List<String> normWords = new ArrayList<>(8);
NormResult result = new NormResult(normWords);
return result;
}
}
Personnellement, je remplacerais 'Collections.emptyList()' par 'null', mais en dehors de cela, je ne vois aucun problème dans cette approche. – domsson
pourquoi faites-vous ** résultat de retour; ** quand vous devriez retourner une liste ?? –
votre code ne compile pas –