Использование методов «защищенного финала» суперкласса для сохранения общего кода для подклассов

Как (педантичный) начинающий программист на 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);
    }
}
9
задан dmzkrsk 4 October 2011 в 17:26
поделиться