@the5x

Interface для Repository и Service, как правильно сделать?

Пишу проект на Laravel и использую паттерн Repository, где собственно отдельно работаю с ORM и отдельно с данными в Service. Например UserRepositiry и UserService.

Например CRUD, я хотел бы завести Interface и использовать его и в UserRepository и в UserService. Например UserContract. Правильный ли это подход. Если нет, то подcкажите, как правильно, ведь в конструктор контроллера я хочу передавать UserContact $userContract, но и не хочу разделять интерефейсы, на UserServiceContract и UserRepositoryContract, где часть методов будет похожа. Как правильно сделать?
  • Вопрос задан
  • 118 просмотров
Решения вопроса 1
AmdY
@AmdY
PHP и прочие вебштучки
Вы плодите лишние сущности, которые к тому же занимаются дублированием.
Ваш UserService должен принимать UserRepository и работать с данными через него.
Так же и контроллер должен работать с UserService и не работать напрямую с UserRepository.
Простая цепочка UserModel -> UserRepository -> UserService -> UserController. Если вы начнёте переставлять звенья, то цепочка запутается и будет хуже чем прямая работа с UserModel.

Интрефейсы я упустил, в 99% в таком кейсе они не имеют смысл, т.к. в проекте у вас будет одна реализация каждой сущности. Плодить интерфейсы ради интерфейсов не стоит. Так же как и репозитории ради репозиториев. Всегда задавайте себе вопрос - зачем я пишу этот код, зачем ввожу это слой, это реально мне надо?
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
05 нояб. 2024, в 19:14
100000 руб./за проект
05 нояб. 2024, в 19:07
12000 руб./за проект
05 нояб. 2024, в 17:38
150000 руб./за проект