Builder pattern
O Builder pattern resolve o problema de criar objetos complexos com muitos parâmetros opcionais, evitando construtores gigantes. Na prática, você vê builders em bibliotecas como jQuery (encadeamento de métodos) e em APIs de configuração (ex.: new HttpClientBuilder().withTimeout(5000).withSSL().build()). Dominar esse padrão torna seu código mais legível e flexível, especialmente quando um objeto pode ser montado de várias formas.
O PROBLEMA
Implemente Builder para Pedido com métodos encadeáveis: setProduto, setQuantidade, build.
EXEMPLO
criarPedidoBuilder().setProduto('TV',2000).setQuantidade(2).build()
→ {produto:'TV', total:3650}SOBRE O CONCEITO
O Builder pattern separa a construção de um objeto da sua representação final. Aqui, o builder é um objeto que acumula dados via métodos encadeáveis, cada método retorna o próprio builder (return this) para permitir a chamada em sequência. O erro comum é esquecer de retornar this, o que quebra o encadeamento — ao invés de retornar o builder, o método retorna undefined, gerando erro ao tentar chamar o próximo método. O método build() finaliza e retorna o objeto pedido com os dados coletados e calcula o total (por exemplo, preço * quantidade com desconto). Como não é permitido usar loops, você pode usar throw para validar se os campos obrigatórios foram preenchidos antes de construir.
RESOLUÇÃO