laravel — шаблоны проектирования PHP Фабрики, хранилища и …?

У нас есть заводы для создания сложных объектов. (Для макинтоша)

У нас есть хранилища для их поиска. (Для поиска вещей)

Что у нас есть для их обновления? (Для переодевания)


Похоже на недостающую часть головоломки? Я не думаю, что это относится к репозиториям, поскольку это нарушает единственную ответственность …

1

Решение

Обновление сущности (и, следовательно, базы данных) принадлежит репозиторию. Сам репозиторий является слоем между самой базой данных и программой.

Таким образом, каждая операция с базой данных принадлежит репозиторию. Кроме того, репозиторий не должен взаимодействовать с базой данных, он также может иметь XML, CSV или API в качестве источника данных. Но это не имеет значения, потому что вы общаетесь с хранилищем. Репозиторий имеет дело со всем, что будет потом.

Вы можете просто заменить репозиторий другим, и ваша программа будет работать без проблем, потому что все репозитории реализуют один и тот же интерфейс. Вам больше не нравится база данных MySQL, этот старомодный CSV намного лучше? Просто замените использованный репозиторий, и все готово.

Поиск записи с хранилищем не более SELECT утверждение, так почему бы вам не UPDATE или же DELETE с этим?

Дальнейшее чтение на MSDN

Нашел отличное объяснение и пример на web.archive.org

2

Другие решения

Я думаю, что это зависит от подхода.

С DDD, например, то, что вы говорите, правда. Репозиторий должен отвечать за добавление, поиск и удаление, поскольку он работает с коллекцией, но возникает вопрос, почему он должен иметь возможность обновлять один объект.

Что можно сделать? Я думаю, что буду копировать только то, что сказал другой человек, поэтому я просто оставлю ссылку, чтобы ответить: подход к удалению сохранения / обновления из хранилища

1

По вопросам рекламы [email protected]