簡體   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