Как избавится от сравнения класов

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