Strategic Pattern

The Architect

El Strategic Pattern es un patrón de diseño cuyo concepto es poder definir un conjunto de algoritmos intercambiales, de tal forma que el cliente que los use no se vea afectado. Para tratar de explicar este patrón de diseño tomemos como ejemplo un sistema que permita crear super héroes (como un juego), sabemos que todo super héroe tiene varios poderes especiales, un nombre y una identidad secreta. Los poderes pueden ser distintos entre personajes, por ejemplo Flash es el "hombre más rápido", pero no vuela como Superman y Ironman. Strategic Pattern nos permite modelar este tipo de situaciones, la idea es programar contra interfaces y no clases concretas, separarando las partes variables de lo estático. En este caso lo variable es el tipo de poder especial que tiene cada personaje.

Diagrama UML:

En este diagrama UML separamos la parte variable (color verde) y definimos una interfaz IPoderEspecial, la cual posee el método Activar() que se encarga de activar el poder especial del personaje. Las implementaciones reales están definidas en las clases Volar, VisionCalorifica, Velocidad y Fuerza; por otro lado la clase Heroe implementa la IPoderEspecial (por el principio de programar contra interfaces y no clases concretas), la clase Heroe define aspectos estáticos del personaje, y expone un método abstracto llamado MostrarSímbolo() el cual muestra la imagen representativa de cada héroe, finalmente son las clases concretas Flash, Ironman y Superman quienes definen cada personaje y establecen la habilidad de cada uno mediante el métodod ActivarPoder().

Básicamente este patron de diseño no es de utilidad cuando tenemos varios algoritmos (o super poderes) que un cliente (super héroe) puede utilizar, podemos cambiar estos algoritmos (ya que están separados y encapsulados) sin tener que afectar el cliente, lo que nos ayuda a reutilizar código y mantenerlo bajo patrones claros.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: