В чем преимущество насмешки над интерфейсом вместо конкретного класса - PullRequest
0 голосов
/ 26 января 2012

Есть ли польза от насмешек над конкретным классом по сравнению с интерфейсом?

образец:

В моем CustomerService классе я называю CustomerDataProvider как

customerDataProvider.GetCustomers();

customerDataProvider также может относиться к типу ICustomerDataProvider. Когда я хочу проверить логику только внутри CustomerService, не заходя в базу данных, я должен смоделировать объект customerDataProvider типа ICustomerDataProvider ИЛИ CustomerDataProvider.

В чем преимущество насмешки над одним типом над другим?

1 Ответ

0 голосов
/ 26 января 2012

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

Основная причина насмешек над классами вместо интерфейсов: иногда у вас есть только класс.Если вы делаете свой собственный дизайн и реализацию, то вы можете сделать выбор в пользу того или другого.Если вы используете чужую библиотеку, вам нужно разобраться с тем, что она предоставляет.

...