Executando verificação de segurança...
Em resposta a [Não disponível]
1

Ok, vou tentar fazer um TLDR dos outros comentários aqui num único parágrafo pra quem caíu de paraquenas no post e está com a mesma dúvida.

Sim, você precisa. O livro não passa de um simples catálogo de soluções pra problemas que programadores experientes no passado, os autores do livro, já encontraram na carreira deles, daí eles só estão dando nome aos bois pra facilitar a comunicação. Ao invés de você descrever, em detalhes, o algoritmo da solução que você está pensando pro seu colega, seria muito melhor você só dizer "acho que consigo resolver com um factory". Espera, teu colega não leu o livro? òtimo! Nem precisa! Agora ele tem um termo pra pedir pro ChatGPT detalhar, assim ninguém perde tempo explicando ou tentando entender na hora — é tudo sobre comunicação no final do dia.

Carregando publicação patrocinada...
Conteúdo excluído
2
1

Usar um switch case viola o princípio Open/Closed dos princípios SOLID (pesquisa isso no google).

Sua observação faz sentido. Se nao resolve problema real, pra que aprender???

Um exemplo real:
Você está fazendo uma aplicação e usuário pode escolher salvar os dados em banco de dados ou salvar em arquivo no computador dele. O jeito certo de fazer é (em OOP): Criar uma interface que define como você vai salvar os dados; criar 2 implementações dela, uma para o banco de dados e outra para os arquivos; criar uma factory que instância a classe concreta de acordo com a escolhe do usuário.

O jeito errado de fazer: Usar um switch case =|.

Ou outra: se você usar um switch case pra selectionar a classe correta pra interface... bom, isso é a factory meu amigo haha.

Pronto, tá aí o seu exemplo prático!
Boa sorte nos estudos de design patterns!

Conteúdo excluído
1

opa, bom BugBug?

Então, esse jeito que você escreveu é o jeito errado que eu falei de como resolver o problema.

Mas porque errado né?
Seguinte, imagina agora que eu vou dar suporte a 30 bancos de dados diferentes... você vai deixar no meio do código um switch case de 30 opções ou vai extrair isso para uma classe (não estamos falando de programação funcional nesse exemplo hein) diferente?

Se você extrair pra uma classe diferente, provavelmente você vai usar uma factory.

Lembrando que o seu exemplo nao segue o princípio Open Closed porque a cada novo jeito de salvar vai precisar mudar esse código... o que vai pioriando ele a cada vez que você muda.

Mas, sim, TUDO pode ser resolvido só com loop e if/else a questão e se voce wuer estrurar o código ou não...

Outra coisa, se os padrões de programação orientada a objeto nao fazem sentido na programação funcional... bom, é porque eles são padrões de orientação a objeto. Em programação funcional os padrões são outros. Nessa caso aí você pode fazer uma high order function e só receber a função que salva de acordo com a necessidade,
valeu!

Conteúdo excluído
1

Antes de responder a vantagem de usar um factory, te pergunto: Se você tiver uma necessidade de salvar em 30 lugares diferentes do código, vai repetir esse switch case em 30 outros lugares? seriam 900 linhas de código. O que você faria pra nao ficar repetindo?