public double Calcula(Orcamento orcamento) { IDesconto d1 = new DescontoPorCincoItens(); IDesconto d2 = new DescontoPorMaisQuinhentosReais(); IDesconto d3 = new SemDesconto(); d1.Proximo = d2; d2.Proximo = d3; return(d1.Desconto(orcamento)); }
//D1 é disparado, se der certo ele calcula, se falhar ele vai para o proximo e o D2 tenta trabalhar, se não der, vai para o d3 que é sem desconto. public double Calcula(Orcamento orcamento) { var d1 = new DescontoPorCincoItens(); var d2 = new DescontoPorMaisDeQuinhentosReais(); var d3 = new DescontoPorVendaCasada(); var d4 = new SemDesconto(); //Chain of Responsibility - corrente de responsabilidades /// varias regras que não podem ser todas aplicadas. é divididos por classes, e cada uma com suas regras d1.Proximo = d2; d2.Proximo = d3; d3.Proximo = d4; return(d1.Desconta(orcamento)); }