В чём плох подход, когда базовый класс знает о конкретных наследниках, и чем его можно заменить?

Зависимость базы от конкретных наследников заставляет менять базовый код при каждом расширении и нарушает направление абстракции. Обычно её заменяют виртуальным контрактом или композицией со стратегией.

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

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

Зависимость базы от конкретных наследников заставляет менять базовый код при каждом расширении и нарушает направление абстракции. Обычно её заменяют виртуальным контрактом или композицией со стратегией.

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

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

Зависимость базы от конкретных наследников заставляет менять базовый код при каждом расширении и нарушает направление абстракции. Обычно её заменяют виртуальным контрактом или композицией со стратегией.

Если база выбирает поведение через switch по типу, перенесите различие в переопределяемый метод или интерфейс. Создание конкретных реализаций оставьте фабрике либо composition root.

Базовый класс тогда работает с обещанными возможностями, а не со списком известных потомков. Если иерархия закрыта и операции внешние, возможен Visitor, но это отдельный осознанный компромисс.

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

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

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

Подробнее