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