Необходимость интерфейсов в c # - PullRequest
4 голосов
/ 25 октября 2009

Зачем нужны интерфейсы в c #? как мы пишем абстрактный метод в интерфейсах. вместо этого мы можем напрямую реализовать эти методы в классе.

Ответы [ 12 ]

0 голосов
/ 25 октября 2009

Если вы хотите написать тестируемый код, вам обычно нужно использовать интерфейсы. При модульном тестировании у вас может быть ClassA, который зависит от ClassB, который зависит от ClassC и т. Д., Но вы хотите только протестировать ClassA. Вы, конечно, не хотите создавать ClassC для передачи в ClassB просто для создания экземпляра ClassA.

В этом случае вы заставляете ClassA зависеть от IClassB (или более общего имени, скорее всего, ничего не говорящего о реализации ClassB) и макетировать IClassB в своих тестах.

Все дело в управлении зависимостями для меня.

0 голосов
/ 25 октября 2009

Думайте об интерфейсах как о контрактах.

Вы создаете контракт, которому должен следовать класс. Например, если наш объект Dog должен иметь метод Walk, он определяет класс , должен реализовать этот метод.

Чтобы заставить каждый класс собак (унаследованный или нет) реализовать этот метод, вы должны заставить их придерживаться контракта, т.е. назначить интерфейс, который определяет этот метод.

Интерфейс - это конструкция, которая заставляет определенные классы следовать строгим правилам реализации.

Причина этого в том, что в итоге вы получаете объекты Dog (унаследованные или нет), которые теперь по умолчанию имеют метод Walk. Это означает, что вы можете передавать эти объекты как параметры, будучи уверенными в том, что вы можете вызывать метод Walk для любого класса Dog (унаследованного или нет), и он будет обязательно реализован.

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