Hacia el oeste de Diseño - patrón de estrategia

Registro Westward estudio de diseño. patrones de diseño hacia el oeste pdf Compartir: https://pan.baidu.com/s/11h9x-4RffXydf3GFH5_y7g  código de extracción: x5c3.

Anterior aprendida por ejemplo, la comprobación del supermercado preferenciales ejemplos de paquetes y producir algoritmo de plantas simples . Esta es una planta fácil de seguir trabajando y que se convierta en un modo de estrategia.

Cada algoritmo es una políticas preferenciales específicos, se resumieron una estrategia común es devolver el importe de la factura. Creado por ejemplo CashContext, estrategia de venta, lo que simplifica el acoplamiento entre las clases y los algoritmos que utilizan una clase de algoritmo. Aquí el cliente conoce el uso específico de un tipo diferente de estrategia, e incluso comprobar si la cantidad calculada por la mezcla de varias estrategias (por ejemplo: entrante "lleno 900 por 100; 20%" en el uso de CashRebate y CashReturn).

usando System; 

espacio de nombres ConsoleApp4 
{ 
    clase Programa 
    { 
        pública  estática  vacío principal ( string [] args) 
        { 
            var cashContext = nueva CashContext ( " 8折" );
            var resultado = cashContext.GetResult ( 900 ); 
        } 
    } 

    Pública  clase CashContext 
    { 
        CashSuper cashSuper; 
        pública CashContext ( cadena tipo) 
        { 
            conmutador (tipo)
            { 
                Caso  " 满300减50 " : cashSuper = nuevo CashReturn (300d, 50d); romper ;
                caso  " 8折" : cashSuper = nuevo CashRebate ( 0.8D ); romper ;
                por defecto : cashSuper = nuevo CashNormal (); romper ; 
            } 
        } 
        Pública  doble GetResult ( doble dinero) 
        { 
            retorno cashSuper.AcceptCash (dinero); 
        } 
    } 

    Pública abstracta  clase CashSuper 
    { 
        pública  abstracta  doble AcceptCash ( doble de dinero); 
    } 

    Pública  clase CashNormal: CashSuper 
    { 
        público  anulación  doble AcceptCash ( doble dinero) 
        { 
            retorno de dinero; 
        } 
    } 

    Pública  clase CashRebate: CashSuper 
    { 
        privada  doble de reembolso; 

        pública CashRebate ( doble rebaja) 
        { 
            este .rebate =reembolso; 
        } 

        Pública  anulación  doble AcceptCash ( doble dinero) 
        { 
            retorno de dinero * rebaja; 
        } 
    } 

    Pública  clase CashReturn: CashSuper 
    { 
        privada  doble moneyCondition;
        privada  doble moneyReturn;
        público CashReturn ( doble condición, doble @return) 
        { 
            moneyCondition = condición; 
            moneyReturn =  @return;
        }
         Pública  anulación  doble AcceptCash ( doble dinero) 
        { 
            si (dinero> = moneyCondition) 
            { 
                retorno de dinero - ((dinero / moneyCondition) * moneyReturn); 
            } 
            Demás 
            { 
                retorno de dinero; 
            } 
        } 
    }     
}

 

Supongo que te gusta

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