/// <summary>
        /// TEMPLATE: Estruturas similares mas algoritmos diferentes
        /// </summary>
        private static void TemplateImpostos()
        {
            Imposto ikcv = new IKCV();
            Imposto icpp = new ICPP();

            Orcamento            orcamento  = new Orcamento(500.0);
            CalculadorDeImpostos calculador = new CalculadorDeImpostos();

            Console.WriteLine($"IKCV......: {calculador.RealizaCalculo(orcamento, ikcv)}");
            Console.WriteLine($"ICPP.....: {calculador.RealizaCalculo(orcamento, icpp)}");

            Console.ReadKey();
        }
        /// <summary>
        /// STRATEGY: Aplicar em regra de negócio com interfaces similares para eliminar a necessidade de If's
        /// </summary>
        private static void Strategy()
        {
            Imposto iss  = new ISS();
            Imposto icms = new ICMS();
            Imposto iccc = new ICCC();

            Orcamento            orcamento  = new Orcamento(500.0);
            CalculadorDeImpostos calculador = new CalculadorDeImpostos();

            Console.WriteLine($"ISS......: {calculador.RealizaCalculo(orcamento, iss)}");
            Console.WriteLine($"ICMS.....: {calculador.RealizaCalculo(orcamento, icms)}");
            Console.WriteLine($"ICCC.....: {calculador.RealizaCalculo(orcamento, iccc)}");

            Console.ReadKey();
        }