Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Dúvida sobre a classe ProdutoBuilder

Boa tarde, não entendi essa parte do código, alguém poderia me ajudar?

    List<Produto> livrosImpressos = ProdutoBuilder
            .newProduto(TipoPreco.IMPRESSO, BigDecimal.TEN)
            .more(3).buildAll();

A minha dúvida é sobre o que está acontecendo por baixo dos panos nessa parte do código. Pelo que entendi ProdutoBuilder é a classe, o newProduto, o more e o buildAll são métodos, por que há o nome de uma classe seguida de 3 métodos separados por ponto? O que acontece na prática?

4 respostas

Olá Paulo!

O Builder é um padrão de projetos em que a ideia e construir as coisas passo a passo dividindo a construção do objeto em métodos.

Certo, mas a minha dúvida é sobre a sintaxe, como funcionaria esse trecho do código se o dividissemos em etapas?

solução!

Boa noite, Paulo! Como vai?

O trecho dividido em etapas ficaria assim:

ProdutoBuilder pb = ProdutoBuilder
            .newProduto(TipoPreco.IMPRESSO, BigDecimal.TEN);

pb = pb.more(3);

List<Produto> livrosImpressos = pb.buildAll();

Como os métodos newProduto() e more() sempre retornam um novo ProdutoBuilder, o instrutor optou por encadear as chamadas como visto no curso!

Pegou a ideia? Qualquer coisa é só falar!

Grande abraço e bons estudos, meu aluno!

Bom dia Gabriel, agora eu entendi. Obrigado pela ajuda.