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