[英]How to implement an interface which has been parameterized and extends two other interfaces?
[英]How to create an Interface that extends two other Interfaces to define type in java
我有两个接口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 {
...
}
我认为新方法比第一种方法更好,但我不能放心。 这是正确的方法吗? 还有更好的选择吗?
在某种程度上,这是自以为是。 两种解决方案都适用于生命周期有限的小型项目。
但是很明显,第一个解决方案带有一个重要的约束:它引入了Inquiry
和Validatable
之间的耦合。
因此答案是:如果您真的确定您的“模型”以及您想要创建的抽象......在某种意义上:是的,绝对,任何Inquiry
也将始终是Validatable
,那么该解决方案是好的。 因为您的代码与您的心理 model 匹配,并且您确定心理 model 的有效性。
但是如果对这两个接口实际上是相互独立的有一点怀疑,那么你应该选择第二种方法。 因为这种方法说:这两个接口是独立的,需要这两种功能的类可以从将功能组合在一起的连接接口扩展。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.