Как (педантичный) начинающий программист на Java, я хотел бы знать, является ли хорошей практикой перенос общего блока кода, который используется всеми подклассами, в отдельный защищенный ( final ) в родительском классе? Такие задачи, как заполнение списков общими значениями или общие алгоритмы фильтрации и т. Д. Можно ли также использовать защищенные статические методы?
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);
}
}