Если ваш вопрос заключается в том, чтобы узнать о каком-либо способе построения объекта с помощью полиморфизма на основе аргумента String, я полагаю, вы можете использовать шаблон фабричного дизайна ссылка здесь для достижения sh вашей цели.
У фабричного класса будет создатель, подобный следующему:
C createCobject(String str);
внутри createCObject вы можете выполнить проверку строки и определить хотите ли вы построить Foo () или Bar (). Так как Foo и Bar являются производными от типа C, вы можете вернуть любой из этих двух типов на основе переданной строки аргумент .