2016-05-26 7 views
0

Это вопрос проектирования кода приложения. Вот моя ситуация:
У меня есть таблица db с именем Отчет, который представляет собой время работы пользователя в течение заданного месяца. У меня есть DAO для работы с базой данных и @Service, которая инкапсулирует методы dao и делает больше материалов с отчетами.Разработка кода Java двунаправленная связь

Кроме того, у меня есть таблица Цель, чтобы назначать цели пользователям о своей деятельности (цели могут быть ежемесячными или годовыми). У меня снова есть DAO и @Service для использования этих объектов.

Мой вопрос о дизайне, потому что у меня есть двунаправленную связь между двумя службами, особенно для следующих процессов:

  • Сервис Отчет должен обновить целевую службу, когда отчет добавлены, изменены или удалено ..
  • мишени служба нуждается в службе отчетов, когда нам нужно рассчитать прогрессию мишени

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

+0

Вы не определяете интерфейс службы? Таким образом, у вас нет зависимости от сервисных компонентов (реализаций). –

+0

Да, я использую интерфейсы как для моих сервисов, так и для моих DAO. Но в моих реализациях у меня все еще есть эта «круговая» связь между двумя классами, что не очень красиво и сложно поддерживать, особенно в моих модульных тестах. – gWombat

+0

Почему цели должны быть мутированы в отчетах? Не могли бы вы объяснить это? – plalx

ответ

0

Наконец, я решил свою проблему, сделав некоторые изменения в моем ReportDAO и назвав его в моем TargetService. Сделав это, я смог удалить двунаправленную связь между двумя моими службами и иметь только однонаправленную связь.