Подтвердить что ты не робот

Как шаблон Data Mapper отличается от шаблона репозитория?

Я нашел два шаблона, которые, как представляется, имеют одну и ту же цель - в чем разница?

http://martinfowler.com/eaaCatalog/dataMapper.html

http://martinfowler.com/eaaCatalog/repository.html

4b9b3361

Ответ 1

[Репозиторий - это еще один слой абстракции над отображением слой, где сконструирован код построения запроса.

DataMapper гарантирует, что сторона БД забора не должна знать о специфике вашей бизнес-логики и о том, как данные хранятся в памяти вашими бизнес-объектами, а ваша деловая сторона забора не нужна чтобы узнать, как хранятся данные.

Чтобы проиллюстрировать, учтите, что ваши данные хранятся в БД в виде набора строк, скажем, каждая строка представляет элемент в вашем магазине. Со стороны памяти вы можете сохранить эту информацию не как список StoreItem, а как два списка, один для предметов, находящихся на складе, а другой для предметов вне запаса. Задача DataMapper заключалась бы в обработке перехода между одним списком и двумя списками.

Вы можете усложнить ситуацию, добавив списки других объектов и наследование на стороне бизнеса забора. "DataMapper" должен был бы перевести это представление и обратно из него в реляционную БД.

"Репозиторий" обеспечивает функциональность "SELECT * FROM table WHERE" для бизнес-стороны. Вы предоставляете фильтр, и он возвращает коллекцию объектов, соответствующих этому фильтру.

Вкратце: "DataMapper" имеет дело с отдельными объектами, "Репозиторий" имеет дело с коллекциями объектов и расширяется по функциональности, предоставляемой "DataMapper" .