#c# #asp.net-mvc #repository-pattern
#c# #asp.net-mvc #репозиторий-шаблон
Вопрос:
Я просматривал repository
метод для ASP.NET
приложения MVC и заметил, что static
класс не использовался.
Поскольку репо есть CRUD
, почему бы не сделать это static
?
Ответ №1:
1) Сложно выполнять модульное тестирование со статическими классами (если вы тестируете класс, который зависит от вашего репозитория, вы хотите, чтобы этот тест работал с поддельным «издевательским» объектом репозитория вместо вашего реального)
2) Часто требуется иметь по 1 экземпляру репозитория на запрос, чтобы упростить проверку того, что незафиксированные изменения от одного пользователя не испортят ситуацию для другого пользователя.
Комментарии:
1. Ах, пункт номер 2 отсутствовал в моем мозгу. Спасибо, Роберт 🙂
2. Я не понимаю второго пункта. Разве статические классы не являются одним экземпляром по определению? Пожалуйста, уточните.
3. @Anar — разница в 1 экземпляре против 1 экземпляра на запрос
4. По моему опыту, статические классы легко разбить на блоки, поскольку они всегда создаются в режиме без состояния, поэтому на вывод влияет только ввод. С классами с внутренними состояниями может быть практически невозможно узнать, все ли комбинации охвачены тестами.
5. на самом деле вы не можете имитировать статический класс, поскольку они не могут реализовать интерфейс
Ответ №2:
Шаблон хранилища повышает тестируемость, статический класс уменьшает ее.
Комментарии:
1. не пишите комментарии, пишите ответы