Как можно заменить switch-case по типу наследника с использованием полиморфизма?

Вместо switch по конкретному типу вынесите различающееся действие в виртуальный метод или интерфейс и вызовите его через общий контракт. Реализация выбирается по фактическому типу объекта.

Короткий ответ

Что ответить на собеседовании

Вместо switch по конкретному типу вынесите различающееся действие в виртуальный метод или интерфейс и вызовите его через общий контракт. Реализация выбирается по фактическому типу объекта.

Подробный разбор

Ответ с пояснениями

Вместо switch по конкретному типу вынесите различающееся действие в виртуальный метод или интерфейс и вызовите его через общий контракт. Реализация выбирается по фактическому типу объекта.

interface INotification { void Send(); }
class EmailNotification : INotification {
    public void Send() { Console.WriteLine("email"); }
}
class SmsNotification : INotification {
    public void Send() { Console.WriteLine("sms"); }
}
void Deliver(INotification notification) => notification.Send();

Добавление реализации не требует изменять Deliver. Побочные зависимости в рабочем коде лучше внедрять явно. Если меняется внешняя операция над закрытой иерархией, альтернативами могут быть Visitor или таблица стратегий; перенос любого switch в наследование не всегда оправдан.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее