繁体   English   中英

如何创建一个扩展两个其他接口的接口以在 java 中定义类型

[英]How to create an Interface that extends two other Interfaces to define type in java

我有两个接口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 {
  ...
}

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

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

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

因此答案是:如果您真的确定您的“模型”以及您想要创建的抽象......在某种意义上:是的,绝对,任何Inquiry也将始终是Validatable那么该解决方案是好的。 因为您的代码与您的心理 model 匹配,并且您确定心理 model 的有效性。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM