Задать вопрос
@devtestman

В чем различие Manager/Repository/Service?

Здравствуйте.

В чем различие классов с подобными названиями? Я понимаю что в Repository должны быть методы работы с базой данных. В Manager тоже самое но с какое то логикой при этом использую Repository. Это правильно? Что тогда должно быть в Service?
  • Вопрос задан
  • 36 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
Repository - это класс с методами для работы с бд, это правильно.
Manager я обычно видел довольно редко(вообще не видел не на одном проекте), но если используется, то обычно он инкапсулирует логику репозиториев и может например вызывать несколько репозиториев в себе
Service если используются Manager, то обычно сервисы он взаимодействует с репозиториями или менедежрами, валидирует данные, логирует, обрабатывает какие-либо ошибки на этом уровне

но так как менеджеры я вообще не видел, то расскажу, как пишу и как обычно я видел на примере других проектов

Репозитории - взаимодействуют с бд
(На начальном этапе используйте их, перед собеседованием почитай про CQRS)
Сервисы - абстракция, которая инкапсулирует бизнес логику, например один сервис инкапсулирует логику репозитория, другой например отправляет сообщение другому микросервису или клиенту, другой реализует логику работы с внешним API
UseCase - использует сервисы для решения конкретоной бизнес задачи
Например создать новый товар, это же не просто кнопочку на фронте нажать, там много разных действий
В условиях монолита - это создать сам товар, указать его категорию, провалидировать что все корректно, добавить в бд, провалидировать что все нормально записалось, отправить какое-либо уведомление, связаться с внешним API(для каких-либо задач)

для работы с бд вы пишите репозитории, для валидации и инкапсуляции логики вы пишите сервисы, для отправки и связи с внешним API также сервисы, а для самого сценария вы делает UseCase который вызывает все нужные сервисы и уже этот UseCase вызывается в контроллере и контроллер отдает ответ клиенту

Заметь, что UseCase не должны напрямую с репозиториями взаимодействовать, а именно через абстракции, как раз сервисы

А в микросервисах, там еще больше операций, отправка к внешним микросервисам, обработка ответов и т.д
Надеюсь ответил на вопрос, а если я ошибся надеюсь меня исправят
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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