Evo*_*lor 0 java abstraction interface conventions
我有100个类,它们扩展了一个抽象类.
这些类中的50个将需要具有该方法foo(),该方法在每个类之间变化.
我知道有两种方法可以做到这一点:
Option #1:创建一个单方法interface用foo(),并且implement这interface在类50.
Option #2:将abstract方法标题添加foo()到父类,并将foo()方法留空50个类.
以下哪项是更好的约定?为什么?或者有没有更好的方式我没有想到?
还有第三个选项 - 创建一个扩展基本抽象类的抽象类,并使50个类扩展为"中间"抽象类,如下所示:
abstract class Base {
public abstract void bar();
}
abstract class BaseWithFoo extends Base {
public abstract void foo();
}
class OneOfFiftyWithFoo extends BaseWithFoo {
@Override
public void foo() {
... // Implementation
}
}
Run Code Online (Sandbox Code Playgroud)
如果你需要在50个实现中共享一些公共代码,我会使用这种方法foo.此外,它还允许您编写知道对象具有Base 和的 方法的代码BaseWithFoo.
我绝对不会添加foo到Base抽象类中,因为根据您的要求,该方法不适用于大约一半的类.
还有更多参数需要考虑.
是否每个扩展抽象类的类都需要foo()?
难道每个子类中实现foo()的一样吗?
是否有更大的子类子部分可以从另一个抽象子类中的相互实现中获益?
foo()每个子类.| 归档时间: |
|
| 查看次数: |
798 次 |
| 最近记录: |