Não entendi como isso pode ser feito? A resposta do instrutor não mudou nada no método.
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.