Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Strategy pattern aplicado com enums

void main() {
  printAutomovel(valor: Transporte.carro);
}

void printAutomovel({Transporte? valor}) {
  final Map<Transporte, dynamic> conditionals = {
    Transporte.carro: () => print(Transporte.carro),
    Transporte.onibus: () => print(Transporte.onibus),
    Transporte.bike: () => print(Transporte.bike),
  };
  conditionals[valor]();
}

enum Transporte { carro, bike, onibus }

vim do TS .. tem problema se for aplicado dessa maneira? é considerado má prática?

1 resposta
solução!

Oi Victor, tudo bem?

Desculpe a demora em retornar.

A aplicação do padrão Strategy com enums no seu código não é considerada uma má prática. Na verdade, é uma abordagem válida e pode ser útil em determinadas situações.

No seu exemplo, você está utilizando um enum chamado "Transporte" para definir os diferentes tipos de transporte. Em seguida, você está criando um mapa chamado "conditionals" que associa cada valor do enum a uma função específica.

Dessa forma, quando você chama a função "printAutomovel" passando um valor do enum como parâmetro, o mapa "conditionals" é consultado e a função correspondente ao valor do enum é executada.

Essa abordagem permite que você adicione facilmente novos valores ao enum e suas respectivas funções, sem precisar modificar a lógica do código existente. Além disso, torna o código mais legível e fácil de entender.

Portanto, não há problema em aplicar o padrão Strategy com enums dessa maneira. Cada abordagem tem suas vantagens e desvantagens, e cabe a você avaliar qual é a mais adequada para o seu caso específico.

Espero ter ajudado.

Um abraço e bons estudos.