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

Динамическое связывание
на самом деле это должно выглядеть как-то так.

Преимущество, в любое время можем поменять интерфейсы.
Порождение таблицы как правило выносят в фабрику
@kirill-kornyakov посмотри, пожалуйста.