我想知道在父类中是否有一个空函数供子类重写是否需要吗?我个人认为下面的用例是合理的-
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
中再次执行解密。
答案 0 :(得分:0)
在这种情况下,为什么不使用合成而不是继承? Foo类似乎唯一要做的就是解密。我会在Bar类中将其用作依赖项。