static void Main(string[] args)
        {
            Imposto iss  = new ISS();
            Imposto icms = new ICMS();

            CalculadorDeImpostos imposto = new CalculadorDeImpostos();

            imposto.RealizaCalculo(new Orcamento(1000), iss);
            imposto.RealizaCalculo(new Orcamento(1000), icms);

            Desconto mais500 = new DescontoPorMaisdeQuinhentosReais();
            Desconto itens5  = new DescontoPorCincoItens();


            CalculadorDeDesconto desconto  = new CalculadorDeDesconto();
            Orcamento            orcamento = new Orcamento(500);

            orcamento.AdicionaItem(new Item("Caneta", 250));
            orcamento.AdicionaItem(new Item("Xablau", 250));
            orcamento.AdicionaItem(new Item("Caneta", 250));
            orcamento.AdicionaItem(new Item("Xablau", 250));
            orcamento.AdicionaItem(new Item("Caneta", 250));
            orcamento.AdicionaItem(new Item("Xablau", 250));
            orcamento.AdicionaItem(new Item("Caneta", 250));
            orcamento.AdicionaItem(new Item("Xablau", 250));

            double valorDesconto = desconto.RealizaDesconto(orcamento);

            Console.WriteLine(valorDesconto);

            Console.ReadLine();
        }
        public double RealizaDesconto(Orcamento orcamento)
        {
            //Chain of responsabilty
            //Que é uma cadeia de responsabilidades, onde cada caso tem uma
            //condição que pode ou não ser atendida
            Desconto d1 = new DescontoPorCincoItens();
            Desconto d2 = new DescontoPorMaisdeQuinhentosReais();
            Desconto d3 = new SemDesconto();

            d1._proximo = d2;
            d2._proximo = d3;

            return(d1.Desconta(orcamento));
        }