Patrón Estrategia
Definición:
•Es
un patrón de diseño de comportamiento, que encapsula algoritmos en
clases,permitiendo que sean reutilizados e intercambiables. En base a un parámetro,
que
puede se cualquier objeto, permite a una aplicación decidir en tiempo de
ejecución el
algoritmo que debe ejecutar.
•Busca
desacoplar bifurcaciones inmensas con algoritmos dificultosos según el cambio
elegido.
¿Cuando debo usarlo?
•Un
programa tiene que proporcionar múltiples variantes de un algoritmo o
comportamiento.
•Es
posible encapsular las variantes de comportamiento en clases separadas que
proporcionan un modo consistente de acceder a los comportamientos.
•Permite
cambiar o agregar algoritmos, independientemente de la clase que lo utiliza.
Estructura
Ejemplo
Imaginemos
una biblioteca de un instituto educativo que presta libros a los alumnos y
profesores. Los
alumnos pueden
asociarse a la biblioteca pagando una mensualidad. Con lo cual un libro puede
ser prestado a Alumnos, Socios y Profesores.
Por decisión de la administración, a los socios se les prestará el libro más nuevo, luego aquel que se encuentre en buen estado y, por último, aquel que estuviese en estado regular.
En cambio, si un Alumno pide un libro, ocurre todo lo contrario. Por último, a los profesores intentarán otorgargarles libros buenos, luego los recién comprados y, por último, los regulares. Este caso es ideal para el patrón Strategy, ya que dependiendo de un parámetro (el tipo de persona a la que se le presta el libro) puede realizar una búsqueda con distintos algoritmos
Por decisión de la administración, a los socios se les prestará el libro más nuevo, luego aquel que se encuentre en buen estado y, por último, aquel que estuviese en estado regular.
En cambio, si un Alumno pide un libro, ocurre todo lo contrario. Por último, a los profesores intentarán otorgargarles libros buenos, luego los recién comprados y, por último, los regulares. Este caso es ideal para el patrón Strategy, ya que dependiendo de un parámetro (el tipo de persona a la que se le presta el libro) puede realizar una búsqueda con distintos algoritmos
Comenzaremos por la clase persona:
La clase Profesor:
La clase Estudiante:
La clase Socio:
Nuestra Interface que encapsula las estrategias:
Y las estrategias concretas:
Primera:
Segunda:
Tercera:
Necesitaremos una Factoría que cree los diferentes objetos de las estregias según sea la intancia:
y por ultimo nuestro Main:
Consecuencias:
•Permite que los comportamientos de los Clientes sean determinados dinámicamente
sobre un objeto base.
•Simplifica los Clientes: les reduce responsabilidad para seleccionar
comportamientos o implementaciones de comportamientos alternativos. Esto
simplifica el código de los objetos Cliente eliminando las expresiones if y switch.
•En algunos casos, esto puede incrementar también la velocidad de los
objetos Cliente porque ellos no necesitan perder tiempo seleccionado un
comportamiento.
0 comentarios:
Publicar un comentario