Задать вопрос
LoliDeveloper
@LoliDeveloper
Линейная алгебра как смысл жизни

Чьи объекты использовать: сервера или клиента?

Склеиваю в один проект: модуль с приложением и модуль с сервером. Хочу чтобы они использовали одни классы и не приходилось при малейших изменениях постоянно копировать классы из модуля в модуль.
И вот вопрос. Допустим у меня есть класс User на сервере и есть такой же класс на клиенте. Я сделал зависимость клиента от сервера, то есть удалил класс User из клиента и импортировал этот класс из серверного модуля. А теперь стало интересно: а вдруг надо наоборот делать зависимость сервера от клиента? Ведь мы на клиенте внедряем фичи, и серверные прогеры должны подстраиваться под фронт и всё такое. Хотя если оба модуля пишет один человек, то может быть и без разницы, но всё равно интересно что народ думает.

p.s: Help с тэгами
  • Вопрос задан
  • 94 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 2
sergey-gornostaev
@sergey-gornostaev Куратор тега Java
Седой и строгий
Можно завести третий модуль для общих классов.
Ответ написан
Комментировать
Вообще оба варианта приемлимые, но расскажу свой опыт:
1. Возникает требование создать фичу
2. Фронт, бэк, и ещё какие-то люди собираются и обсуждают её. Фронт и Бэк договариваются о том, каким должен быть API
3. Создаются интерфейсы для апи и дтошки
(На этом моменте фронт уже может писать код, пока сервер не готов)

Таким образом сервер и клиент не зависят друг от друга, но при этом всегда согласованы.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
azerphoenix
@azerphoenix Куратор тега Java
Java Software Engineer
Я сделал зависимость клиента от сервера, то есть удалил класс User из клиента и импортировал этот класс из серверного модуля.

Можно создать модуль common и закинуть туда ваши общие классы.
Я вообще делаю примрено следующим образом: создаю несколько модулей один из которых persistence, где располагаются сущности и репозитории, второй модуль common, где содержатся утильные классы и сервисные классы, а также модуль web (где хранятся контроллеры, мапперы, соответсвующие эксепшены и их обработчики, шаблоны и т.д.). Ну и дальше уже по необходимости... например, модуль api для rest. Также создаю отдельный модуль для flyway и хранения sql скриптов. Разумеется, что структура у вас может отличаться в зависимости от вашей задачи..
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы