Базовый класс не должен зависеть от наследников — как это можно реализовать? Как можно заставить базовый класс знать о существовании наследников?

Базовый класс должен зависеть от абстракций: вызывать виртуальный метод, работать через интерфейс или получать стратегию извне. Перечисление конкретных наследников связывает базу с расширениями.

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

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

Базовый класс должен зависеть от абстракций: вызывать виртуальный метод, работать через интерфейс или получать стратегию извне. Перечисление конкретных наследников связывает базу с расширениями.

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

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

Базовый класс должен зависеть от абстракций: вызывать виртуальный метод, работать через интерфейс или получать стратегию извне. Перечисление конкретных наследников связывает базу с расширениями.

Template Method позволяет базе задавать общий алгоритм, а наследникам — переопределять отдельные шаги. Композиция с интерфейсом часто ещё проще: конкретная стратегия выбирается снаружи через DI.

Если действительно нужен каталог реализаций, его обычно создают в фабрике, registry или composition root, а не внутри базы. Reflection может обнаружить загруженные типы-наследники, но сама по себе не объясняет, как их создавать, и усложняет trimming/AOT. Проверки типа каждого наследника в базовом классе — признак неверной границы ответственности.

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

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

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

Подробнее