如何创建一个接口来扩展另外两个接口来定义java中的类型

ckocjqey  于 2021-06-29  发布在  Java
关注(0)|答案(1)|浏览(385)

我有两个接口 Inquiry 以及 Validatable 我还有两个班 ErrorReport 以及 FunctionQuery 工具 Inquiry 以及 Validatable 两者都有。
当我有一个使用两个接口操作组合的逻辑时,最好的选择是什么?我知道我可以用逻辑把它分成两部分 Inquiry 以及 Validatable ,但是逻辑是结合在一起的,所以如果我把它分开,它会产生其他的重复。
我试着像下面这样,但是,我意识到这种层次结构是不合适的,因为 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 {
  ...
}

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

z3yyvxxp

z3yyvxxp1#

在某种程度上,这是自以为是的。这两种解决方案都适用于有限生命周期的小型项目。
但很明显,第一种解决方案有一个重要的限制:它引入了 Inquiry 以及 Validatable .
因此答案是:如果你真的确定你的“模型”,以及你想要创建的抽象。。。在这个意义上:是的,绝对的,任何 Inquiry 将永远是一个 Validatable ,那么这个解决方案也可以。因为您的代码与您的心智模型相匹配,并且您确信心智模型的有效性。
但是如果有一点怀疑这两个接口实际上是相互独立的,那么您应该选择第二种方法。因为这种方法说:两个接口是独立的,需要这两种功能的类可以从将功能结合在一起的连接接口扩展。

相关问题