Является ли шаблон репозитория излишним

Я использую шаблон репозитория (DDD и POEAA) в течение некоторого времени. Однако некоторые из членов нашей команды утверждали, что это просто дополнительный уровень абстракции и не нужен. Я вижу некоторую пользу в их аргументах. В современных ORM-решениях (NHibernate или EF) есть почти все, что вам нужно. Я искал и нашел статью вроде этой и контраргумент на эту тему. Так является ли шаблон репозитория излишним?


person Tinku    schedule 04.08.2010    source источник


Ответы (3)


Это зависит, в основном, от сложности вашей проблемы и роли, которую ваша модель предметной области играет в решении. Для простых решений репозиторий, вероятно, излишен. Но для сложных доменов с надежным языком и меняющимися потребностями/требованиями репозиторий — это хорошая, чистая абстракция, которая владеет жизненным циклом объекта домена. Многие ORM будут делать многое из этого, но в сложном домене всегда будет какая-то доменная активность, которая имеет смысл в репозитории и которая не поддерживается ORM из коробки.

Итог: это зависит от контекста.

person Brandon Satrom    schedule 04.08.2010
comment
@Arnis - Вот почему у нас, как у разработчиков, есть не просто молотки, у нас есть целый набор инструментов. - person Martin; 15.02.2011
comment
@Мартин, у некоторых есть только клейкая лента :) - person Arnis Lapsa; 16.02.2011

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

person Kimi    schedule 04.08.2010

Одна из причин, по которой мы используем репозитории в нашем проекте, заключается в том, что они определяют, кто является нашими совокупными корнями (мы разрешаем репозитории только для AR), чтобы вы правильно работали с AR, а не запрашивали то, что вам нравится.

И, как упомянул Ал.., он обеспечивает приятный интерфейс для макетирования во время модульных тестов.

person Shane Courtrille    schedule 04.08.2010