Opa amigo, tudo bom? como é quase a mesma coisa, será que você não consegue adaptar ao padrão strategy? ai sim retornar a classe correspondente que você deseja?
Complementando o comentário do Felipe, veja aqui uma referência do padrão mencionado. Neste mesmo site tem artigos para diversos outros padrões.