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; } } } }