Westward projeto - padrão de estratégia

Registro Westward estudo design. padrões de projeto Westward pdf Compartilhar: https://pan.baidu.com/s/11h9x-4RffXydf3GFH5_y7g  código de extração: x5c3.

Anterior aprendemos pelo exemplo de supermercado preferenciais exemplos de pacotes algoritmo e produção de plantas simples . Esta é uma planta simples para continuar a trabalhar e deixá-lo tornar-se um modo de estratégia.

Cada algoritmo é uma políticas preferenciais específicos, eles abstraída uma estratégia comum é a de devolver o valor da conta. Criado por exemplo CashContext, estratégia chamada, simplificando o acoplamento entre classes e algoritmos usando uma classe de algoritmo. Aqui o cliente conhece o uso específico de um tipo diferente de estratégia, e ainda verificar se o montante calculado pela mistura de várias estratégias (por exemplo: Incoming "completa 900 por 100; 20%" sobre o uso de CashRebate e CashReturn).

usando System; 

namespace ConsoleApp4 
{ 
    classe Programa 
    { 
        público  estático  vazio Main ( corda [] args) 
        { 
            var cashContext = new CashContext ( " 8折" );
            var resultado = cashContext.GetResult ( 900 ); 
        } 
    } 

    Pública  classe CashContext 
    { 
        CashSuper cashSuper; 
        pública CashContext ( corda type) 
        { 
            interruptor (tipo)
            { 
                Caso  " 满300减50 " : = cashSuper novo CashReturn (300d, 50d); quebrar ;
                caso  " 8折" : cashSuper = new CashRebate ( 0.8d ); quebrar ;
                default : cashSuper = new CashNormal (); quebrar ; 
            } 
        } 
        Pública  dupla GetResult ( double dinheiro) 
        { 
            return cashSuper.AcceptCash (dinheiro); 
        } 
    } 

    Pública abstract  class CashSuper 
    { 
        pública  abstrato  dupla AcceptCash ( double dinheiro); 
    } 

    Pública  classe CashNormal: CashSuper 
    { 
        pública  substituição  dupla AcceptCash ( double dinheiro) 
        { 
            return dinheiro; 
        } 
    } 

    Pública  classe CashRebate: CashSuper 
    { 
        private  double rebate; 

        pública CashRebate ( double rebate) 
        { 
            este .rebate =desconto; 
        } 

        Pública  substituição  dupla AcceptCash ( double dinheiro) 
        { 
            return dinheiro * rebate; 
        } 
    } 

    Pública  classe CashReturn: CashSuper 
    { 
        private  double moneyCondition;
        private  double moneyReturn;
        pública CashReturn ( dupla condição, dupla @return) 
        { 
            moneyCondition = condição; 
            moneyReturn = @ return; 
        }
        pública  substituição  dupla AcceptCash ( double dinheiro) 
        { 
            se (dinheiro> = moneyCondition) 
            { 
                return dinheiro - ((dinheiro / moneyCondition) * moneyReturn); 
            } 
            Else 
            { 
                return dinheiro; 
            } 
        } 
    }     
}

 

Acho que você gosta

Origin www.cnblogs.com/bibi-feiniaoyuan/p/strategy.html
Recomendado
Clasificación