Está en la página 1de 3

Modelado y Programación

Semestre 2022-1

Prática 1
"Strategy y Observer"

Alumno
Torres López, Armando

316127666

Profesor
Rosa Victoria Villa Padilla

Ayudantes
Jose Ricardo Rosas Bocanegra

Arturo Lemus Pablo

17 de Octubre de 2021
Prática 1
Modelado y Programación 2022-1 "Strategy y Observer"

Strategy
Estrategy nos sirve para definir una familia de algoritmos, encapsularlos y hacerlos inter-
cambiables
Permite que el algoritmo cambie sin que afecte a los clientes que lo usan
¿Cuándo usar strategy?

1. Varias clases relacionadas sólo difieren en su comportamiento. Strategy permite con-


figurar a una clase con uno de entre varios comportamientos

2. Se necesiten variantes del mismo algoritmo, que se implementan como una jerarquía
de clases

3. Un algoritmo usa datos que los clientes no tienen por qué conocer (ej. estructuras de
datos específicas del algoritmo)

4. Una clase define muchos comportamientos que aparecen en sentencias condicionales


� mover los relacionados a un strategy

¿Qué necesita strategy?

1. Strategy (Compositor): define una interfaz común a los algoritmos que soporta.

2. ConcreteStrategy: implementa un algoritmo usando la interfaz Strategy

3. Context (Composition):
Está configurado con un objeto ConcreteStrategy
Mantiene una referencia al objeto Strategy
Puede definir una interfaz que le permita a Strategy acceder a sus datos

Ventajas de Strategy

1. Ayuda a factorizar funcionalidad común de los algoritmos

2. Alternativa a herencia estática que facilita la comprensión, mantenimiento y extensión.


Además permite cambiar el algoritmo dinámicamente.

3. Ayuda a eliminar sentencias condicionales

Desventajas de Strategy

1. El cliente es el responsable de crear estrategias, por tanto debe comprender las posi-
bilidades que ofrecen, esto es, debe ser relevante para el contexto del cliente.

2. Menor eficiencia. Aumenta el número de objetos creados.

Facultad de Ciencias U.N.A.M. 2 de 3


Prática 1
Modelado y Programación 2022-1 "Strategy y Observer"

Observer
El patrón Observer nos permite implementar una estrategia que reaccione a los cambios
de estado en el objeto observado.

¿Qué necesita observer?

1. Objetos observables: Estos objetos deberán implementar un mecanismo para poder


añadir y eliminar objetos observadores. Estableceremos las condiciones que deben
cumplir a través de una interfaz IObservable. Además de los método que se ven a
continuación, la interfaz, podría declarar un método “void notificar();” que se encar-
garía, en su implementación, de avisar a todos los observadores del cambio de estado.

2. Objetos observadores: serán aquellos objetos que implementen la interfaz IObserver


donde vendrá definido, al menos, un método que defina la reacción correspondiente
al cambio de estado.

Ventajas de Observer
La principal ventaja es que proporciona un diseño ligeramente acoplado entre los objetos que
interactúan. Esto quiere decir que los objetos no conocen mucho del otro. El observado sólo
conoce la interfaz que implementan los observadores, para agregar o quitar observadores
no hay que modificar al observado y ambas clases pueden utilizarse de manera indepen-
diente (observado y observador).

Desventajas de Observer
Desventajas: La fuga de memoria es gran y capaz que única desventaja. Esto se debe a que
para agregar o quitar observadores se tiene que hacer de manera explícita. Aunque no se
utilicen más los observadores sigue quedando la referencia para notificarlo y esto hace que
el recolector de basura no lo elimine.

Referencias
[1] http://arantxa.ii.uam.es/~eguerra/docencia/0809/07%20Strategy.pdf

[2] http://giovanni-sanchez.blogspot.com/2009/05/strategy.html

[3] https://www.seas.es/blog/informatica/patrones-de-diseno-en-java-patron-observer/

[4] https://somospnt.com/blog/155-patron-de-comportamiento-observer

Facultad de Ciencias U.N.A.M. 3 de 3

También podría gustarte