Разделение интерфейсов и реализаций на отдельные модули / JAR - PullRequest
0 голосов
/ 08 мая 2019

Я создаю компонент, который выполняет некоторые налоговые расчеты. Я создал два модуля Maven tax-utility-api и tax-utility-impl.

tax-utility-api содержит интерфейсы для компонента

public int getTaxableIncome (int доход);

и tax-utility-impl содержит фактические реализации

public int getTaxableIncome (int доход) {

// некоторый код

}

Причина, по которой я разделил интерфейсы и реализации на разные JAR-файлы, заключалась в том, что другие компоненты будут зависеть только от api (контрактного) JAR-кода для разработки кода в их конце. И impl JAR потребуется только во время выполнения.

Но когда я попытался создать тестовый компонент, который зависит от api JAR этого компонента, я понял, что не могу использовать функции, поскольку они являются интерфейсами, а не конкретными методами. Поэтому вместо этого в зависимости от impl я могу использовать функции компонента.

Это меня смутило, и у меня есть два вопроса:

  1. Во-первых, чтобы другие компоненты зависели от интерфейсов в моем api JAR, нужна ли мне инфраструктура DI, такая как Spring?
  2. Неужели я неправильно понял реальную выгоду / цель разделения интерфейсов (контракта) и реализации на разные модули / JAR-файлы?

Спасибо за чтение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...