Задать вопрос
@naneri
PHP разработчик.

Почему логику по созданию обьектов выносят отдельно из паттерна Репозиторий?

Много раз видел в проектах на Laravel, в приложении - создают отдельный класс который отвечает за создание объектов и выносят его отдельно. Почему так делают и не оставляют в классе репозитория?
  • Вопрос задан
  • 502 просмотра
Подписаться 2 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Loftschool
    Комплексное обучение PHP
    6 недель
    Далее
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Skillbox
    Профессия PHP-разработчик с нуля до PRO
    7 месяцев
    Далее
Решения вопроса 1
@carbon88
.NET developer/ORM developer
Думаю тут играет роль принцип одной обязанности. Ну и плюс паттерн фабрика.

Класс репозитория должен отвечать за одну задачу, полагаю это действия над репозиторием. Если ему нужно получить некий объект, он не задумываясь берет нужную фабрику и получает объект и дальше работает с объектом. Классу репозитория не нужно знать как создается объект и что для этого нужно. Он должен знать лишь что от такой-то фабрики можно получить класс объектов, реализующих интерфейс или наследующих некий класс. А вот уже фабрика должна располагать алгоритмом создания того или иного объекта.

Такой подход уменьшает связность и увеличивает гибкость. Если нужно поменять код создания объектов, то правится и тестируется только класс фабрики. Все клиенты этой фабрики должны лишь знать, что гарантированно получат объект с определенным интерфейсом.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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