2
respostas

Aula 06 item 7

Não entendi como isso pode ser feito? A resposta do instrutor não mudou nada no método.

2 respostas

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.