Não entendi como isso pode ser feito? A resposta do instrutor não mudou nada no método.
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Não entendi como isso pode ser feito? A resposta do instrutor não mudou nada no método.
Amigo, boa tarde.
Talvez, o que o instrutor quis dizer é que um único método Com() poderia ser sobrecarregado (pesquise o conceito de overload) para tratar o tipo certo de informação a ser adicionada; EX:
Onde está
public NotaFiscalBuilder ComItem(ItemDaNota item)
{
todosItens.Add(item);
valorBruto += item.Valor;
impostos += item.Valor * 0.05;
return this;
}
Ficaria:
public overload NotaFiscalBuilder Com(String razaoSocial)
{
this.RazaoSocial = razaoSocial;
return this;
}
public overload NotaFiscalBuilder Com(ItemDaNota item)
{
todosItens.Add(item);
valorBruto += item.Valor;
impostos += item.Valor * 0.05;
return this;
}
E a implementação ficaria assim:
NotaFiscal nf = new NotaFiscalBuilder()
.Com("razao social")
.Com(new Item("item 1", 100.0))
.Com(new Item("item 2", 200.0))
.Com(new Item("item 3", 300.0))
.Constroi();
Assim... a própria linguagem se encarrega de identificar quando você está tentando incluir um texto ou um item, entretanto, o nome do método é o mesmo Com()
Excelente explicação do Leonardo Da Vinci Fernandes.