Является ли шаблон репозитория излишним - PullRequest
10 голосов
/ 04 августа 2010

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

Ответы [ 3 ]

12 голосов
/ 04 августа 2010

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

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

4 голосов
/ 04 августа 2010

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

1 голос
/ 04 августа 2010

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

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

...