例如,我的界面如下:
interface Test {
void a();
void b();
}
class TestImpl implements Test {
public void a() {
// Do something
}
public void b() {
// Do something
a();
}
}
我认为这是不好的做法。是真的吗或对此有什么理论吗?
答案 0 :(得分:0)
这不是一个坏习惯。例如,检查以下用例。
interface Test {
void bigTask();
void validateBigTask();
void performBigTask();
}
在这种情况下,您可以将大任务细分为清晰和易读。
答案 1 :(得分:0)
您发布的场景不仅有效,而且非常常见,例如在ArrayList
中检查以下实现。方法contains
调用indexOf
,这两者都是来自接口List
的抽象方法。
public boolean contains(Object o) {
return indexOf(o) >= 0;
}
答案 2 :(得分:0)
这不是一个坏习惯。 看下面的例子:
interface Task {
boolean preConditionTask();
void executeTask();
boolean postConditionTask();
}
public class TaskImpl implements Task {
boolean preConditionTask() {
//Some logic.
}
boolean postConditionTask() {
//Some logic.
}
void executeTask() {
if (!preConditionTask()) {
//Log or throw.
}
//Some task logic.
if (!postConditionTask()) {
//Log or throw.
}
}
}
您拥有每个任务都必须执行的合同。 合同告诉实现者,每个任务都有前置,后置和执行逻辑。