【问题标题】:How to create an Interface that extends two other Interfaces to define type in java如何创建一个扩展两个其他接口的接口以在 java 中定义类型
【发布时间】:2021-03-27 23:23:12
【问题描述】:

我有两个接口InquiryValidatable 而且我还有两个类ErrorReportFunctionQuery 实现了InquiryValidatable 两者。

当我有一个使用两个接口操作组合的逻辑时,最好的选择是什么? 我知道我可以使用InquiryValidatable 将它分成两个逻辑,但是逻辑是合并的,所以如果我将它分开,就会产生其他重复。

我尝试如下,但我意识到这种层次结构不合适,因为Validatable 在我的应用程序中不是Inquiry 的概括。

先接近

public interface Inquiry extends Validatable {
  ...
}

还有这样的课程。

public class ErrorReport implements Inquiry{
  ...
}
public class FunctionQuery implements Inquiry {
  ...
}

新方法

所以我创建了一个如下所示的界面。

public interface ValidatableInquiry extends Inquiry,Validatable{
  ...
}

和类

public class ErrorReport implements ValidatableInquiry {
  ...
}
public class FunctionQuery implements ValidatableInquiry {
  ...
}

我认为新方法比第一种方法更好,但我不能放心。 这是正确的方法吗?还有更好的选择吗?

【问题讨论】:

    标签: java oop interface multiple-inheritance


    【解决方案1】:

    在某种程度上,这是固执己见。这两种解决方案都适用于生命周期有限的小型项目。

    但是很明显,第一个解决方案有一个重要的限制:它引入了InquiryValidatable 之间的耦合。

    因此答案是:如果您真的确定您的“模型”,以及您想要创建的抽象......在以下意义上:是的,绝对的,任何Inquiry 也永远是Validatable,那么这个解决方案就可以了。因为您的代码与您的心智模型相匹配,并且您确信您的心智模型的有效性。

    但如果最轻微怀疑这两个接口实际上是独立彼此的,那么你应该选择第二种方法。因为这种方法说:这两个接口是独立的,需要这两种功能的类可以从将功能组合在一起的连接接口扩展。

    【讨论】:

      猜你喜欢
      • 2013-11-02
      • 1970-01-01
      • 2021-10-09
      • 2016-09-17
      • 2012-12-06
      • 1970-01-01
      • 2020-01-12
      • 1970-01-01
      相关资源
      最近更新 更多