[英]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.