如何创建一个扩展两个其他接口的接口以在 java 中定义类型
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
,,那么这个解决方案就可以了。因为你的代码符合你的心智模型,你对你的心智模型的有效性有把握。
但是如果对这两个接口实际上相互独立有一点最轻微的怀疑,那么你应该选择第二种方法.因为该方法表明:这两个接口是独立的,需要两种功能的 类 可以从将功能组合在一起的 joining 接口扩展。
我有两个接口 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
,,那么这个解决方案就可以了。因为你的代码符合你的心智模型,你对你的心智模型的有效性有把握。
但是如果对这两个接口实际上相互独立有一点最轻微的怀疑,那么你应该选择第二种方法.因为该方法表明:这两个接口是独立的,需要两种功能的 类 可以从将功能组合在一起的 joining 接口扩展。