2015-10-05 2 views
3

В настоящее время я пытаюсь разделить проект Java на несколько модулей. Для целей обслуживания и повторного использования, и я думаю, это хорошая идея, потому что я вижу разные зависимости между классом.Хорошая практика разделения класса в модулях maven

Однако у меня есть два вопроса относительно процесса расщепления.

  • ссылки Круговая класс: иногда у меня есть циклические ссылки между моими классами. Я предполагаю, что он сильно связан, и их следует поместить в один и тот же модуль. Это хороший выбор?
  • Вертикальный против горизонтального разделения: Я не очень-то знаком, но я кое-что прочитал об этом. Я не знаю, как я должен разделять. Если у меня есть несколько классов, которые выполняют функцию, нужно ли их группировать вместе в один модуль (например: «управление базой данных»)

Спасибо!

+0

Вы считаете использование микросервисов? – jpganz18

+1

Ссылка на круговой класс - это идентификация, что ваш дизайн не в порядке ... Развязка ... – khmarbaise

+0

@ jpganz18: Я не знаю, действительно, какие микросервисы, хотя я читал некоторые вещи об этом. Поэтому я не рассматривал это. – Poke

ответ

3

Циркулярные ссылки на классы: Maven не позволит вам иметь два модуля, которые зависят друг от друга. Это не скомпилируется. Пока вы не сможете разделить эти классы, они должны быть в одном модуле.

Что касается разделения проекта на модули, то разделение должно быть о (неожиданности) модульности вашего продукта. Модули позволят вам развернуть конкретные части проекта в зависимости от среды, а не развертывать все. Например, у вас могут быть отдельные модули для кода на стороне сервера, кода на стороне клиента и общего кода. Клиентам не нужна логика на стороне сервера, поэтому она не должна быть частью развертывания для них.

+0

Спасибо , Я ожидал такого ответа. Есть ли у вас указатель/лучшие методы, чтобы избежать ссылок на круговые классы? Я пытаюсь использовать как можно больше интерфейса, но все же получил некоторые из них! – Poke

+1

Книга Code Complete, глава 6, объясняющая абстрактные типы данных, инкапсулирование и скрытие информации, чрезвычайно полезна для разработки чистых, хороших интерфейсов и классов. – janos

Смежные вопросы