将接口和实现拆分为单独的模块/ JAR

时间:2019-05-08 03:27:08

标签: java api maven design-patterns polymorphism

我正在构建一个组件,可以执行一些税额计算。我已经创建了两个Maven模块tax-utility-apitax-utility-impl

tax-utility-api包含组件的接口

  

public int getTaxableIncome(int income);

tax-utility-impl包含实际的实现方式

  

public int getTaxableIncome(int income){

     

//一些代码

     

}

我之所以将接口和实现划分为不同的JAR,是为了使其他组件仅依靠api(合约)JAR来在其末尾开发代码。并且impl JAR仅在运行时才需要。

但是,当我尝试创建依赖于该组件api JAR的测试组件时,我意识到我无法使用这些函数,因为它们是接口,而不是具体方法。因此,可以依靠impl来使用组件的功能。

这让我感到困惑,我有两个问题:

  1. 首先,要使其他组件仅依赖于我的api JAR中的接口,我需要像Spring这样的DI框架吗?
  2. 我是否误解了将接口(合同)和实现分为不同的模块/ JAR的真正好处/目的?

感谢阅读。

0 个答案:

没有答案