Почему хранилища данных не являются статичными?

#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. не пишите комментарии, пишите ответы