Como fica a classe ProcessadorDeRequisicoes após essa implementação?
Como fica a classe ProcessadorDeRequisicoes após essa implementação?
Como está o seu atualmente?
using System;
namespace CursoDesignPatterns.ChainOfResponsability.RequisicoesWeb { public class ProcessadorDeRequisicoes { public void Requisitar(Formato formato) { //Conta conta = new Conta("Veloso", 1000.0);
//Resposta r1 = new RespostaEmXml(null); //Resposta r2 = new RespostaEmCsv(); //Resposta r3 = new RespostaEmPorcento(); //Resposta r4 = new SemResposta();
//r1.Proximo = r2; //r2.Proximo = r3; //r3.Proximo = r4;
//Requisicao req = new Requisicao(formato);
//r1.Proximo.Responde(req, conta); } } }
/* Desconto d1 = new DescontoMaisDeCincoItens(); Desconto d2 = new DescontoValorMaiorQuinhentosReais(); Desconto d3 = new DescontoPorVendaCasada(); Desconto d4 = new SemDesconto();
d1.Proximo = d2; d2.Proximo = d3; d3.Proximo = d4;
return d1.Proximo.Desconta(orcamento); */
Aparentemente, ta tudo comentado....
Posta com a tag de código pra melhorar o visual
Justamente, eu não sei qual o conteúdo dessa classe. Tanto no vídeo quanto no exercício eu não consegui encontrar o código dela, esses trechos comentados foram minhas tentativas de fazer ela funcionar, mas não deu certo.
Vi que você colocou no seu Github o código desse curso, vou tentar fazer de novo e usá-lo como referência.
Valeu.
A minha ficou assim, diferente do exercício pois achei melhor implementar com o uso de listas para facilitar a incrementação de outros métodos posteriormente.
public class CalculadorDeDescontos
{
public IList<Desconto> ListaDescontos { get; private set; }
public double Calcula(Orcamento orcamento)
{
ListaDescontos = new List<Desconto>();
//-- Adicionar os tipos de descontos existentes a lista para serem encadeados
this.ListaDescontos.Add(new DescontoPorCincoItens() );
this.ListaDescontos.Add(new DescontoPorMaisDeQuinhentosReais() );
this.ListaDescontos.Add(new DescontoPorVendaCasada());
this.ListaDescontos.Add(new SemDesconto() ); //-- Importante! Deve ser o último!
//-- Definir a cadeia de execução dos descontos.
for ( int contador = 0; contador < ListaDescontos.Count; contador++)
{
//-- Verificar se não é último desconto ( Sem desconto )
if ( contador + 1 < ListaDescontos.Count)
{
//-- Definir que o próximo item da lista é o desconto a ser executado
ListaDescontos[contador].Proximo = ListaDescontos[contador + 1];
}
}
//-- Executar o primeiro desconto e os demais serão executados em cadeia
return ListaDescontos[0].Desconta(orcamento);
}
}
Para modificar conforme esse exercício ficaria assim:
public class CalculadorDeDescontos
{
public double Calcula(Orcamento orcamento)
{
//-- Adicionar os tipos de descontos existentes a lista para serem encadeados
Desconto primeiroDesconto = new DescontoPorCincoItens(
new DescontoPorMaisDeQuinhentosReais(
new DescontoPorVendaCasada(
new SemDesconto() ) ) ); //-- Importante! Deve ser o último!
//-- Executar o primeiro desconto e os demais serão executados em cadeia
return primeiroDesconto.Desconta(orcamento);
}
}