从java接口上的接口调用另一个接口方法是错误的做法吗?

从java接口上的接口调用另一个接口方法是错误的做法吗?,java,Java,例如,我有一个如下界面: interface Test { void a(); void b(); } class TestImpl implements Test { public void a() { // Do something } public void b() { // Do something a(); } } 我认为这是不好的做法。这是真的吗?或者对此有什么理论吗?这是一种不错

例如,我有一个如下界面:

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

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

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

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

这是一种不错的做法。例如,检查以下用例

interface Test  {
   void bigTask();
   void validateBigTask();
   void performBigTask();
}

在这种情况下,为了清晰易读,您可以细分您的大任务。

这是一个不错的做法。 请看下面的示例:

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.
        }
    }
}
你有一个每个任务都必须执行的合同。
契约告诉实现者每个任务都有前置、后置和执行逻辑。

为什么您认为这是一种不好的做法?这段代码在Java中是无效的;您没有为方法指定返回类型,并且
class
不应该有大写的
C
。此外,除非您解释为什么您认为这是一种不好的做法,否则您的问题无法得到有效的回答。请在发布之前编译您的代码。您有一个接口,并且您有一个实现它的类。此代码绝对有效。接口允许您声明方法,并且在类中只需实现它们。PS:从技术上讲,void不会返回任何东西。。。您可以打印文本,例如。。。你使用界面有什么特别的原因吗?对不起,我只想举个例子。这里的问题是,它可能会打破我想象中的单一责任规则。方法B也将具有A所具有的功能,好吗?不过我不会将它们作为接口的一部分公开,它们是实现细节。(尽管你的观点还有其他几个有效的例子。)