Documentos de Académico
Documentos de Profesional
Documentos de Cultura
DISEÑO DE SISTEMAS
STRATEGY: ESTRUCTURA
DISEÑO DE SISTEMAS
STRATEGY: ESTRUCTURA
• Estrategia (SortStrategy)
declara una interfaz común a todos los algoritmos
permitidos. El Contexto usa esta interfaz para llamar al
algoritmo definido por una EstrategiaConcreta
• Contexto (SortedList)
se configura con un objeto EstrategiaConcreta.Mantiene una
referencia a un objeto Estrategia. Puede definir una interfaz
que permita a la Estrategia acceder a sus datos
DISEÑO DE SISTEMAS
STRATEGY
DISEÑO DE SISTEMAS
STRATEGY
«interface»
LibroStrategy LibroFinder
+ findLibro() : void
+ findLibro() : void
DISEÑO DE SISTEMAS
STRATEGY
DISEÑO DE SISTEMAS
STRATEGY
8
STRATEGY VS. STATE
Se suele decir que los patrones Strategy y State son hermanos que
fueron separados al nacer. Esto se debe a que sus razones de ser
son muy parecidas: modificar el funcionamiento de un objeto en
tiempo de ejecución de forma transparente a través de un proceso
de composición.
La diferencia fundamental, sin embargo, se encuentra en que el
patrón Strategy tiene como objetivo proporcionar alternativas
para realizar una misma tarea, aunque ésta sea de alto nivel, es
decir: el patrón Strategy es adecuado cuando queremos, por
ejemplo, serializar un objeto. Cada una de las implementaciones
encapsulará una forma distinta de serialización: binaria, Base64,
como un fichero XML, JSON, etc.
DISEÑO DE SISTEMAS
STRATEGY VS. STATE
State, por su parte, tiene su razón de ser en proporcionar
comportamientos distintos cuando la aplicación se encuentra
en estados distintos. Con este patrón, la clase que implemente
nuestro State realizará operaciones distintas dependiendo de su
estado, no proporcionará “varias formas de hacer lo mismo”. Por
ello, Strategy y State son patrones distintos, aunque muy
similares: Strategy encapsula el algoritmo, mientras que State
encapsulará un comportamiento que variará dependiendo del
estado en el que se encuentre el programa.
DISEÑO DE SISTEMAS