По сути, если все, что вы делаете, - это класс, реализующий интерфейс, то этот интерфейс бесполезен. На него следует ссылаться inlieu класса, чтобы иметь реальную выгоду. Краткий надуманный пример для объяснения в коде:
public interface IFoo
{
string Bar();
}
public class Foo : IFoo
{
public string Bar()
{
return "Foo";
}
}
public class FooTwo : IFoo
{
public string Bar()
{
Return "FooTwo";
}
}
public class FooBar
{
public void UseFoo()
{
IFoo foo = new Foo();
string result = foo.Bar();
}
public void UseFooTwo()
{
IFoo fooTwo = new FooTwo()
string result = fooTwo.Bar();
}
}
Как видите, оба метода в FooBar
используют IFoo
вместо фактической реализации Foo
или FooTwo
. Это позволяет вам (или кому-то, кто реализует часть кода, которую вы написали) соблюдать договор, который IFoo
. Если бы они сделали FooTwo fooTwo = new FooTwo()
, то на самом деле они не получают никакой выгоды от FooTwo
реализации IFoo
.