Patron Strategy

Introduccion:

Define una familia de algoritmos, encapsula uno de ellos y los hace intercambiables. Permite que un algoritmo varie independientemente de los clientes que lo usan.

Nombre del Patron:
Strategy (Estrategia, Policy).

Clasificacion del Patron:
Patron de Comportamiento.

Intencion:

Definir un grupo de clases que representan un conjunto de posibles comportamientos. Estos comportamientos pueden ser facilmente intercambiados en una aplicacion, modificando la funcionalidad en cualquier instante.

Motivacion:

Estructurar una familia de algoritmos de modo que sus clientes puedan intercambiarlos en tiempo de ejecución.

Estructura:



Participantes:

IStrategy: declara una interfaz común para todos las variantes de un algoritmo.

StrategyX: implementa una variante del algoritmo.

StrategyClient: es el responsable de crear y mantener una referencia a una estrategia concreta.

Colaboraciones:

El cliente de la estrategia decide la estrategia a crear.

Consecuencias:

Factoriza aspectos comunes de una familia de algoritmos y utilizarlos en las clases base de la jerarquía.

Aumenta cohesión del cliente

Sistematiza el uso de implementaciones alternativas

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

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

Patron State

Introduccion:

Permite que un objeto modifique su comportamiento cada vez que cambia su estado interno. Parecera que cambia la clase del objeto.

Nombre del Patron:
State (Estado, Objects for States).

Clasificacion del patron:
Patron de Comportamiento.

Intencion:

Cambiar facilmente el comportamiento de un objeto en tiempo de ejecucion.

Motivacion:

Cambiar el comportamiento dependiendo del estado.
Cuando queremos que un objeto cambie su comportamiento, según cambia su estado, se presenta el problema de la complejidad de código.

Estructura:




Participantes:

Context: Define la Interfaz y mantiene una instancia con el estado actual.

State: Define una interfaz para el comportamiento asociado a un determinado estado del Contexto.

ConcreteState: Cada subclase implementa el comportamiento asociado con un estado del contexto.

Consecuencias:

Localiza el comportamiento dependiente del estado y divide dicho comportamiento en diferentes estados.

Hace explícitas las transiciones entre estados.

Los objetos Estado pueden compartirse.

Patron Observer

Introduccion:

Define una dependencia de uno a muchos entre objetos, de forma que cuando un objeto cambia de estado se notifica y actualizan automaticamente todos los objetos.

Nombre del Patron:
Observer (Observador, Publishe-Suscriptor).

Clasificacion del Patron:
Patron de Comportamiento.

Intencion:

Proporcionar a los componentes una forma flexible de enviar mensajes de difusion a los receptores interesados.

Motivacion:

Muchas veces un efecto lateral de partir un sistema en una colección de objetos relacionados es que necesitamos mantener la consistencia entre objetos relacionados.

Estructura:


Participantes:

Subject: Conoce a sus observadores, Proporciona una Interfaz para que se suscriban los objetos Observer.

Observer: Define una interfaz para actualizar los objetos que deben ser notificados de cambios en el objeto Subject.

ConcreteSubject: Guarda el estado de interes para los objetos ConcreteObserver, Envia una notificacion a sus observadores cuando cambia su estado.

ConcreteObserver: Mantiene una referencia a un objeto ConcreteSubject, Guarda el estado que deberia permanecer sincronizado con el objeto observado, Implementa la interfaz Observer para mantener su estado consistente con el objeto observado.

Colaboraciones:

El objeto observado notifica a sus observadores cada vez que ocurre un cambio.
Después de ser informado de un cambio en el objeto observado, cada observador concreto puede pedirle la información que necesita para reconciliar su estado con el de aquél

Hora Bogotá Colombia