Estou colocando em prática o conhecimento das aulas e gostaria de saber como criar uma fábrica de estados sem utilizar aquele monte de if comparando com o Enum do estado.
Por exemplo: Eu tenho um atendimento que pode ter vários estados. Eu gostaria de criar o AtendimentoState sem usar esse monte de if:
public class FactoryAtendimentoState {
@Autowired
protected ApplicationContext applicationContext;
public AtendimentoState getAtendimentoState(StatusAtendimentoEnum status) {
// Verifica o status do atendamento para criação da instancia certa para o status
if (StatusAtendimentoEnum.AGENDADO == status) {
return applicationContext.getBean(AtendimentoAgendado.class);
}
else if(StatusAtendimentoEnum.ENCAMINHADO == status) {
return applicationContext.getBean(AtendimentoEncaminhado.class);
}
else if(StatusAtendimentoEnum.ENCERRADO == status) {
return applicationContext.getBean(AtendimentoEncerrado.class);
}
else
return applicationContext.getBean(AtendimentoDesistente.class);
}
Eu tentei fazer dessa forma, mas fiquei na dúvida como seria a interação com o frontend.. (estou usando Rest)
public class FactoryAtendimentoState {
@Autowired
protected ApplicationContext applicationContext;
public static AtendimentoState getAtendimentoState2(AtendimentoState atendimentoState) {
return atendimentoState.getIntanciaNova();
}
}
Aí cada estado ficaria parecido com isso:
public class AtendimentoAgendado extends AtendimentoState {
@Override
public AtendimentoState getIntanciaNova() {
return applicationContext.getBean(AtendimentoAgendado.class);
}
//....
}
Alguém pode me ajudar? É Possível fazer o que desejo?