Статический класс DataService и IRepository <T>? - PullRequest
0 голосов
/ 10 мая 2010

Я только что изучил код фреймворка Sacha Barbers MVVM Chinch и увидел это в файле xxxViewModel.cs:

DataService.FetchAllOrders(CurrentCustomer.CustomerId.DataValue);

DataService является классом Static.Будучи младшим разработчиком, я привык только к интерфейсам со службами данных.Почему этот класс статичен?

Или вы думаете, он сделал это только для примера?

Так это хороший подход?

1 Ответ

0 голосов
/ 10 мая 2010

Честно говоря, я не знаю, что происходит в FetchAllOrders - он может быть запрограммирован на хорошее поведение.

На практике я видел, что статические классы плохо используются для поддержания инфраструктуры, необходимой для доступа к данным. Я говорю «плохо», потому что эти реализации (которые я видел) не были сделаны потокобезопасными. Когда код был развернут в многопользовательской среде (например, веб-приложении), он взорвался.

  • Используйте статические классы для классов, которые не содержат состояния (и в результате являются потокобезопасными). Классы только с методами, например.
  • Используйте статические классы для классов, в которых предполагается сделать последовательный доступ с блокировками (threadsafe).
  • Использование статических классов в одноразовом коде, чтобы избежать накладных расходов на конструирование / обслуживание / передачу экземпляров.

Посмотрите на среду .net и посмотрите, какие классы Microsoft сделала статичными, и подумайте, почему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...