Интерфейсы отличные.
Они описывают поведение, даже не говоря точно, как это поведение должно быть реализовано.
Библиотека классов .NET предоставляет множество доказательств для описания поведения, фактически не говоря о том, что происходит за кулисами. См. IDiposable
, IEnumerable<>
, IEnumerator<>
. Любой класс, который реализует эти интерфейсы, по контракту обязан придерживаться интерфейса.
Может быть некоторая путаница между интерфейсом и абстрактным классом. Обратите внимание, что абстрактный класс может реализовывать и выполнять то, что, черт возьми, он хочет. Это может означать контракт, но это не так.
Интерфейс не имеет реализации, это просто аспект и контракт. Это очень, очень мощная идиома. Особенно, когда вы определяете интерфейсы, такие как:
public interface IFileSystem;
Что неожиданно позволяет вашему приложению работать с обычными файлами, zip-архивами, FTP-сайтами ... список можно продолжить.
Интерфейсы - очень мощная идиома. Игнорировать их на свой страх и риск:)