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?
Em resposta a É má prática criar uma função que retorna uma classe?
2
1
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.