Я нашел два шаблона, которые, как представляется, имеют одну и ту же цель - в чем разница?
Как шаблон Data Mapper отличается от шаблона репозитория?
Ответ 1
[Репозиторий - это еще один слой абстракции над отображением слой, где сконструирован код построения запроса.
DataMapper
гарантирует, что сторона БД забора не должна знать о специфике вашей бизнес-логики и о том, как данные хранятся в памяти вашими бизнес-объектами, а ваша деловая сторона забора не нужна чтобы узнать, как хранятся данные.
Чтобы проиллюстрировать, учтите, что ваши данные хранятся в БД в виде набора строк, скажем, каждая строка представляет элемент в вашем магазине. Со стороны памяти вы можете сохранить эту информацию не как список StoreItem
, а как два списка, один для предметов, находящихся на складе, а другой для предметов вне запаса.
Задача DataMapper
заключалась бы в обработке перехода между одним списком и двумя списками.
Вы можете усложнить ситуацию, добавив списки других объектов и наследование на стороне бизнеса забора. "DataMapper" должен был бы перевести это представление и обратно из него в реляционную БД.
"Репозиторий" обеспечивает функциональность "SELECT * FROM table WHERE" для бизнес-стороны. Вы предоставляете фильтр, и он возвращает коллекцию объектов, соответствующих этому фильтру.
Вкратце: "DataMapper" имеет дело с отдельными объектами, "Репозиторий" имеет дело с коллекциями объектов и расширяется по функциональности, предоставляемой "DataMapper" .