@elmoreden

Как правильно распределять ответственность между классами?

Сталкиваюсь с разными типами ролей классов: service, repository, store, mapper. Подскажите, в какой литературе или других источниках можно почитать о ролях классов, как между ними распределить функционал и т.д.

P.S. И скажите, в чём разница между Store и Repository?
  • Вопрос задан
  • 385 просмотров
Пригласить эксперта
Ответы на вопрос 5
ipatiev
@ipatiev Куратор тега PHP
Потомок старинного рода Ипатьевых-Колотитьевых
Сервис - это часть модели. Класс, который реализует некую бизнес-логику, не связанную напрямую с хранилищем.
Репозиторий - часть модели, класс, который содержит методы для работы с хранилищем.
Стор - это какая-то местечковая приблуда. Из битрикса небось? Либо какие-то академические измышления, вот как в соседнем ответе. Вроде человек что-то пишет, но яснее ничего не становится.
Маппер имеет много значений. Если речь про Data Mapper, то это разделение самих данных и их отображения в БД.

Читать стандартно - Дядюшка Боб Мартин и Мартин Фаулер. Конкретно по РНР - Зандстра.
Ответ написан
Starina_js
@Starina_js
full-stack web dev
Литература. Хороший источник, имхо
По ddd можно погуглить порядок чтения книг, плюс допом видосы с конференций на ютубе.
"Clean Architecture" и "Domain-Driven Design" как знакомство с этим всем делом.

И скажите, в чём разница между Store и Repository?
Store - хранилище. Обычно это про паттерн состояние. Оно может содержать логику обновления состояния и взаимодействия с другими частями приложения
Repository - это такая абстракция для доступа к источнику данных, то есть где хранятся данные. Может быть файловое хранилище, может быть база данных , а иногда , если работаешь с cms/фреймами - их интерфейсы для работы с хранилищами. Как пример: репозиторий, отвечающий за получение и сохранение данных пользователей в базе данных
Ответ написан
mayton2019
@mayton2019
Bigdata Engineer
Поскольку топик тегирован PHP то я-бы предложил взять PHP фреймворки и смотреть как они видят себе реализацию шаблона например репозиторий. Я-бы мог рассказать о Spring Data Repository но боюсь что для PHP будут отличия и автор просто запутается.

Банда Четырех (юбилейное издание) описывает шаблоны проектирования .... эээ кажется на SmallTalk и С++. По крайней мере во Введении книги они об этом писали. Поэтому читая код надо уметь читать глазами сущности этого мира и не пугаться.

Что такое шаблон Store - я не знаю. Опять-же это специфика PHP скорее всего.

Что такое шаблон Сервис. Ну я вообще не рискнул бы его никак определять. Это КМК слишком размытое понятие и его надо срочно сузить. Хотя-бы до уровня техно-стека. Может сервис в терминологии SOAP это одно. Облачный сервис - может быть вообще другое. Короче архитекторы этих технологий будут бить друг друга здесь как епископы разных церквей друг друга за ереси.

Сервис для ООП - вообще седьмая вода на киселе. Вообще ООП надо начать и закончить на его полиморфизмах и наследованиях и поставить точку. Дальше - нет ООП. Дальше идет хаос и новые виды абстракций от вендора языка. Аннотации и аспекты и рефлексия и прочий бред.
Ответ написан
SilenceOfWinter
@SilenceOfWinter Куратор тега PHP
та еще зажигалка...
Ответ написан
Комментировать
DollyPapper
@DollyPapper
Про репозиторий можно почитать например тут
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽