簡體   English   中英

在Java中,將所有接口提取到單獨項目中的技術動機是什么?

[英]In Java, what is the technical motivation for extracting all interfaces into a separate project?

我見過Java項目,其中的接口都被提取到一個單獨的項目中。

這是什么動機? 它只是組織嗎?

例如,大氣項目就是這樣做的。 我見過其他人。

我正在考慮將它作為我正在運行的項目的組織原則,並且想知道它可能提供的其他好處。

存在一個用例: Java SPI,服務提供者接口 接口是單獨提供的,(替代)實現是分開提供的。 通過具有接口名稱的清單條目,使用接口可以找到該接口的所有/任何提供者。 我想到了Xalan和Xerces XML實現。

此外,沒有SPI能夠提供多種實現,如測試驅動開發原型,可能有意義。

只是提供我的2美分,

我目前正在開發一個C#項目,它有一個包含所有接口的獨立項目。 該項目被命名為“框架”,並且是一個更大的項目的一部分,該項目包含來自該框架項目的10多個接口實現。 我的猜測是(后來我的直接上級證實了這一點)是它完全將實現與設計分開 ,稱為松散耦合

這樣,從框架項目繼承的各種項目可以單獨開發或獨立交換。 從一個剛接觸項目的開發人員,他/她更容易熟悉在一個中心位置的其他項目中使用的所有方法。 添加新方法或刪除舊方法都是在一個項目中完成的,並且使用這些接口的每個其他項目都要遵循嚴格的“合同”。 從本質上講,它有助於長期維護項目。

它還使得在測試期間更容易創建框架的某些部分的模型,以單獨隔離每個類並測試它們是否存在可能的錯誤。

它有助於遵循接口隔離原則,在該原則中,如果特定接口僅具有“保存”方法,但我們需要針對特定​​實現類的“日志”和“讀取”,我們可以創建另一個將繼承的接口父接口,所有在框架項目中,並沒有涉及到不同的項目,以找到我們想要添加的接口。 在研究接口隔離原理時發現了這一點

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM