public ICalculaDescontoStatusConta GetCalculaDescontoStatusConta(EStatusContaCliente statusContaClientes)
        {
            ICalculaDescontoStatusConta calcular;

            switch (statusContaClientes)
            {
            case EStatusContaCliente.NaoRegistrado:
                calcular = new ClienteNaoRegistrado();
                break;

            case EStatusContaCliente.ClienteComum:
                calcular = new ClienteComum();
                break;

            case EStatusContaCliente.ClienteEsprecial:
                calcular = new ClienteEspecial();
                break;

            case EStatusContaCliente.ClienteVIP:
                calcular = new ClienteVIP();
                break;

            default:
                throw new NotImplementedException();
            }

            return(calcular);
        }
        public decimal AplicardescontoPorFidelidadeonto(decimal precoProduto, EStatusContaCliente statusContaCliente, int tempoDeContaEmAnos)
        {
            decimal precoAposdesconto = 0;

            precoAposdesconto = _descontoStatusConta
                                .GetCalculaDescontoStatusConta(statusContaCliente)
                                .AplicarDescontoStatusConta(precoProduto);
            precoAposdesconto = _calculaDescontoFidelidade
                                .AplicarDescontoFidelidade(precoAposdesconto, tempoDeContaEmAnos);

            return(precoAposdesconto);
        }