从Java接口上的接口调用另一个接口方法是不好的做法吗?

时间:2020-02-17 12:06:19

标签: java

例如,我的界面如下:

interface Test  {
    void a();
    void b();
}

class TestImpl implements Test {
    public void a() {
        // Do something
    }

    public void b() {
        // Do something
        a();
    }
}

我认为这是不好的做法。是真的吗或对此有什么理论吗?

3 个答案:

答案 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.
        }
    }
}

您拥有每个任务都必须执行的合同。 合同告诉实现者,每个任务都有前置,后置和执行逻辑。