Strategy, sigamos con los patrones…

Bueno para los amantes de los patrones en este artículo voy a mostrarles una aplicación de Strategy.

Vemos algunas definiciones para comenzar la implementación del ejemplo:

"El patrón Strategy permite mantener un conjunto de algoritmos de los que el objeto cliente puede elegir aquel que le conviene e intercambiarlo según sus necesidades."

"El patrón strategy (estrategia) está orientado a resolver situaciones en las que nos encontramos con un problema base pero existen diversas estrategias para abordar el problema"

La pregunta es: ¿Cuántas veces nos ocurren estos problemas? Y ni hablar la diversidad de soluciones propuestas, muchas con poco sentido. Por este motivo es fundamental entender el objetivo del patrón para poder aplicar de forma consistente a determinados problemas.

Les voy a mostrar un diagrama general del patrón después veremos una implementación: (grafico herramienta de modelado EA)


La implementación de estrategias extensibles es lo más notorio del patrón, imaginemos que tenemos que solucionar la problemática de la utilización de varios medios de pago y graficar el cálculo de envío. El modelo se vería como la siguiente figura:


De esta forma podríamos implementar la estrategia más deseable en determinadas situaciones y permitiendo el cambio entre las distintas en tiempo de ejecución.

Finalmente la pregunta es cómo lo implemento en código - (Lenguaje C#)


MetodoEnvioCorreoArgentino argentino = new
MetodoEnvioCorreoArgentino();


IMetodoEnvio envio_1 = (IMetodoEnvio)argentino;

Carro.MetodoEnvio = envio_1;

(para este caso podriamos optar por una selección por parte del usuario y si realizar la instancia com muestra el ejemplo)

Puede ser si se animan usando reflexion:

IMetodoEnvio envio = (IMetodoEnvio)AppDomain.CurrentDomain.CreateInstance("Paquete", "Paquete.MetodosDeEnvio.MetodoEnvio" + metodo).Unwrap();

Carro.MetodoEnvio = envio;

(para este ejemplo metodo trae el nombre de la clases para realizar al reflexion)

En fin espero que puedan aplicar el patrón en varios segmentos de su diseño, pensemos donde es requerido este tipo de soluciones y van a encontrar muchos esquemas factibles.

Comentarios

Entradas más populares de este blog

Modelando relaciones en UML, un acercamiento a las Asociaciones

Utilizando Intents implícitos para crear actividades

Secuencias…Modelado indispensable