Разделенные API и структура проекта реализации
структура проекта parent-api-impl является для меня чем-то новым. Наша структура проекта Java maven выглядит так:
> com.sample.myproject
> com.sample.myproject.api
> com.sample.myproject.impl
мои вопросы:
Как создать такой проект в Eclipse таким образом, чтобы они были связаны друг с другом?
когда такой вид структуры целесообразно?
есть ли какой-либо сайт или ссылка, на которую я могу ссылаться, которая обсуждает такую структуру? Ля учебник или руководство, возможно?
2 ответов
1) в eclipse вы создаете проект 3 и делаете pom.xml-файл для каждого для управления maven. После этого, вы должны сделать:
- родитель зависит от api
- impl зависит от родителя и api
таким образом, плагин eclipse m2eclipse подключит проекты друг к другу.
2) эта структура проекта рекомендуется только в том случае, если вам когда-либо понадобится изменить всю реализацию определенного api. Это позволяет разместить другую банку с другой реализация на легко приложения, без modifiing любой Java-код. Конечно, это применимо только в том случае, если вы ссылаетесь только на api, а не на реализацию. Его можно выполнить с EJB или весной.
3) я не могу думать о каких-либо учебниках или сайтах там, извините.
Я думаю, что было бы разумнее ответить на ваши вопросы в обратном порядке...
поскольку у вас есть API,Фасад Шаблон Данных может быть хорошей точкой для начала. Цель этого шаблона состоит в том, чтобы обеспечить интерфейс, к которому могут подключаться внешние пользователи.
этот тип структуры обычно желателен, когда вы хотите выставить ряд функций (API), не разглашая, как вы на самом деле, когда о реализованных таких функциях. Так, например, вы просто выставляете public BigDecimal calculateTax(BigDecimal amount, double percentage)
для ваших пользователей, не показывая, как вы пошли и реализовали свой метод.
наконец, вот как я бы сделал это:
com.sample.myproject
будет моим основным проектом, и в нем я помещу любые основные функции, такие как сохранение объектов.com.sample.myproject.api
будет по существу проекта сInterfaces
и другие вещи, которые я хочу раскрыть.com.sample.myproject.impl
будет осуществлять два проекта выше, используя основной проект и некоторую дополнительную логику, чтобы показать, какой уровень API делает доступным.