@naneri
PHP разработчик.

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

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

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

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

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

Войти через центр авторизации
Похожие вопросы