Да, вам, вероятно, нужны отдельные объекты регистрации и проверки. Шаблон, который вы предложили, с абстрактной базой и ValidationA и ValidationB, которая расширяет его, будет работать. Если у вас действительно нет проверки по умолчанию, вы можете просто сделать валидацию интерфейса и иметь ValidatingA и ValidatingB, которые ее реализуют, и тогда вы сможете использовать полиморфизм времени выполнения для вызова правильного метода Validate.
Одна вещь, которую я начал осознавать, это то, что вы можете спрашивать, спрашивать, обсуждать и размышлять над такими вещами, сколько хотите, но никогда не узнаете, пока не попробуете. Подберите быстрый абстрактный базовый класс и два расширяющих его и посмотрите, выполняет ли он то, что вы хотите. Если нет, просто рефакторинг. Конечно, вы должны учитывать технический долг и т. Д., Но просто попробуйте - это лучший способ учиться.