static void Main(string[] args)
        {
            string  conceptoPedido = "";
            decimal importePedido  = 0M;
            int     tipoPago       = 0;
            string  ctipoPago      = "";

            ITipoPagoFactory objTipoPagoFactory = null;
            IProcesarPedido  Pedidos            = null;

            Console.WriteLine("Ingresa el concepto del pedido");
            conceptoPedido = Console.ReadLine();
            Console.WriteLine("Ingresa el importe del pedido");
            importePedido = Convert.ToDecimal(Console.ReadLine());
            Console.WriteLine("Tipo de Pago.\n1) Efectivo \n2) Tarjeta");
            tipoPago = Convert.ToInt32(Console.ReadLine());

            switch (tipoPago)
            {
            case 1:
                objTipoPagoFactory = new GeneradorEfectivo();
                ctipoPago          = "efectivo";
                break;

            case 2:
                objTipoPagoFactory = new GeneradorTarjeta();
                ctipoPago          = "tarjeta";
                break;
            }
            Pedidos = new ProcesadorPedido(objTipoPagoFactory, conceptoPedido, importePedido, ctipoPago);
            Pedidos.Procesar();
        }
        static void Main(string[] args)
        {
            IFabrica fabrica;
            string   cConcepto  = "";
            string   cImporte   = "";
            string   cModalidad = "";
            double   dImporte   = 0;
            string   cRespuesta = "";

            Console.WriteLine("Concepto del pedido");
            cConcepto = Console.ReadLine();
            Console.WriteLine("Importe del pedido");
            cImporte = Console.ReadLine();
            Console.WriteLine("Modalidad del pedido");
            cModalidad = Console.ReadLine();

            cModalidad = cModalidad.ToUpper();
            dImporte   = double.Parse(cImporte);

            switch (cModalidad)
            {
            case "EFECTIVO":
                fabrica = new GeneradorEfectivo();
                break;

            case "TARJETA":
                fabrica = new GeneradorTarjeta();
                break;

            default:
                throw new Exception("Concepto Erroneo");
            }

            IProcesarPedido procesador = new ProcesadorPedido(fabrica);

            cRespuesta = procesador.procesar(cConcepto, dImporte);

            Console.WriteLine(cRespuesta);
        }