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