JEE Архитектурный вопрос: Сервис может внедрить Сервис?Или Сервис может вводить только Дао? - PullRequest
0 голосов
/ 10 апреля 2019

Вот архитектурная проблема при использовании Dao и Service and Controller:

Предположим, что: На уровне DAO существуют классы DAO, которые называются: Dao1, Dao2, ...

На уровне обслуживания существуют классы обслуживания, которые называются: Service1, Service2, ...

На уровне контроллера существуют классы контроллера, называемые: Controller1, Controller2, ...

Service1 нужно ввести Dao1, а Service2

Контроллер1 должен вводить Dao2, Сервис1 и Контроллер2

Эта архитектура соответствует принципам JEE? Есть ли проблема?

Лучше сказать, что: Сервис может внедрять только Дао, а Контроллер может внедрять только Сервис?

1 Ответ

1 голос
/ 11 апреля 2019

Насколько я понимаю, JEE не упоминает / не рекомендует шаблоны проектирования. JEE определяет набор API для различных областей, таких как транзакции, jdbc, jax-rs и т. Д., И реализация этих API предоставляется разными поставщиками. Таким образом, стандарты JEE помогают разрабатывать корпоративные приложения, но не диктуют никаких принципов проектирования. Поэтому я полагаю, что ваш вопрос заключается в том, следует ли этой архитектуре хорошие шаблоны проектирования и есть ли какие-либо проблемы.

В идеале, согласно вашему второму вопросу, контроллер не должен вводить класс dao. Контроллер должен вызывать только сервисы, а сервисы должны внедрять классы dao и вызывать их методы. Эта конструкция обеспечивает слабую связь между контроллером, сервисным и дао слоями. Таким образом, если сигнатура метода класса dao изменяется, уровень контроллера остается неизменным, и нужно изменить только уровень обслуживания.

Вообще говоря, большинство конструкций стараются добиться максимально слабой связи и высокой когезии.

Надеюсь, это поможет!

...