Подмена реализации интерфейса в C#
Переменная интерфейсного типа может указывать то на один класс-реализацию, то на другой. Контракт остается тем же, меняется только поведение конкретного объекта.
Запишем две реализации печати и подменим объект в одной переменной:
IPrinter printer = new ConsolePrinter();
printer.PrintLine();
printer = new FilePrinter();
printer.PrintLine();
interface IPrinter
{
void PrintLine();
}
class ConsolePrinter : IPrinter
{
public void PrintLine()
{
Console.WriteLine("console");
}
}
class FilePrinter : IPrinter
{
public void PrintLine()
{
Console.WriteLine("file");
}
}
Сделайте интерфейс IGreeter с методом Greet
и два класса с разным текстом приветствия.
Сохраните сначала один объект в переменную
типа IGreeter, вызовите метод,
затем подмените вторым объектом и снова вызовите метод.