Como programador principiante de Java (pedante) me gustaría saber si es una buena práctica mover un bloque de código común que todas las subclases usan por separado protegido (final) método en la clase principal? Tareas como llenar listas con valores comunes, o algoritmos de filtrado comunes, etc ... ¿Es bueno usar también métodos estáticos protegidos?Utilizando métodos "protegidos finales" de superclase para mantener el código común para las subclases
class A {
protected final List<String> getVariants() {...}
protected final List<String> filterResults(List<String> variants) {...}
}
class B extends A {
public List<String> doSomethingUsefull() {
List<String> commonVariants = getVariants();
...
return filterResults(commonVariants);
}
}
class C extends A {
public void doSomethingUsefull() {
List<String> commonVariants = getVariants();
...
return filterResults(commonVariants);
}
public void doMoreUsefullThings() {
List<String> commonVariants = getVariants();
...
return filterResults(commonVariants);
}
}
leyéndolo ahora. – dmzkrsk
estático no es tan malo ... Bloch recomienda su uso para fabricar fábricas, por ejemplo. Y, por supuesto, no queremos que Math.floor() requiera una instancia de Matemáticas. Puede ser útil, pero se usa con cuidado, por supuesto. – PhiLho
Estoy de acuerdo, pero una vez un purista trató de convencerme de todo lo contrario: ¡que los métodos 'Math' NO deberían ser estáticos! – jtoberon