Наследование Java: пустой метод в родительском классе - PullRequest
0 голосов
/ 08 марта 2019

Мне было интересно, не осуждается ли наличие в родительском классе пустой функции, которую дочерние классы могли бы переопределить, если она им нужна? Я лично считаю, что приведенный ниже пример использования оправдывает это -

class Foo {

    void performAdditionalChecksIfNeeded(String decrypted) {
    }

    void validate(String encrypted) {
        final String decrypted = decryptIfProperlyEncrypted(encrypted);
        performAdditionalChecksIfNeeded(decrypted);
    }
}

class Bar extends Foo {
    @override
    void performAdditionalChecksIfNeeded(String decrypted) {
        // Additional validation logic
    }
}

Я знаю, что класс Bar мог бы просто переопределить validate() и вызвать super.validate(), чтобы устранить необходимость пустой функции в Foo. Причина, по которой я организовал код таким образом, заключается в том, что decryptIfProperlyEncrypted использует библиотеку, которую я хотел сохранить только в классе Foo из-за разделения проблем, проблем производительности (дешифрования) и предотвращения дублирования кода. Другими словами, если бы performAdditionalChecksIfNeeded не существовало в Foo, мне пришлось бы снова выполнить расшифровку в Bar.

1 Ответ

0 голосов
/ 08 марта 2019

Почему бы не использовать композицию над наследованием в этом случае? Кажется, единственное, что делает класс Foo, - это расшифровка. Я бы использовал его в классе Bar как зависимость.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...