Я использовал шаблон репозитория (DDD и POEAA) в течение некоторого времени. Однако некоторые члены нашей команды утверждают, что это всего лишь дополнительный уровень абстракции и ненужный. Я вижу некоторую пользу в их аргументах. Современные решения ORM (NHibernate или EF) имеют практически все, что вам нужно. Я искал и нашел какую-то статью, такую как , этот и контраргумент на эту тему. Так что же, шаблон репозитория - излишнее?
Это зависит, главным образом, от сложности вашей проблемы и той роли, которую ваша модель предметной области играет в решении. Для простых решений Repository, вероятно, излишне. Но для сложных доменов с надежным языком и меняющимися потребностями / требованиями Репозиторий - это приятная чистая абстракция, которая владеет жизненным циклом объекта домена. Многие ORM будут делать большую часть этого, но в сложном домене всегда будет какая-то активность домена, которая имеет смысл в репозитории и не поддерживается ORM из коробки.
Итог: это зависит от контекста.
Имитация доступа к данным в модульных тестах - основная причина, по которой я использую интерфейсы репозитория. Еще одна причина ремонтопригодности - вы можете легко реализовать стратегии кэширования или переключиться на другую реализацию доступа к данным, например получение данных из службы вместо БД.
Единственная причина, по которой мы используем репозитории в нашем проекте, заключается в том, что это принудительно определяет, кто является нашими корнями агрегатов (мы разрешаем репозитории только для AR), так что вы работаете над AR должным образом, а не делаете запросы на все, что вам взбредет в голову.
И, как упомянул Эл... это обеспечивает хороший интерфейс для имитации во время модульных тестов.