viernes, 29 de mayo de 2009
Observer

Es usado como un sistema de detección de eventos con el fin de hacer notificaciones de estos cambios a las clases realcionadas.

Características generales de este patrón:

Nombre:

Observer.

También conocido como:

Publisher-Subcriber.

Propósito:

Define una dependencia del tipo uno-a-muchos entre objetos, de manera que cuando uno de los objetos cambia su estado, el observador se encarga de notificar este cambio a todos los otros dependientes.

Aplicabilidad:

Este patrón se utiliza generalmente cuando un sistema:

· Ha enviado al menos un mensaje.

· Recibido uno o más mensajes que pueden variar dentro de una aplicación o entre aplicaciones.

· Este patron es aplicado con frecuencia en situaciones en las que el remitente del mensaje no necesita o requiere saber cómo actuar sobre los receptores de la información que proporciona.Hay un grupo de objetos en un sistema que potencialmente pueden responder para el mismo tipo de mensaje.

Estructura:

Participantes:

· Subject: Conoce a sus observadores, que pueden ser un número arbitrario. Proporciona una interfaz para añadir y quitar objetos observadores.

· Observer: Define la interfaz de los objetos a los que se debe notificar cambios en un sujeto.

· ConcreteSubject: Almacena el estado de interés para sus observadores. Envía notificaciones a sus observadores cuando su estado cambia.

· ConcreteObserver: mantiene una referencia a un ConcreteSubject, almacena el estado del sujeto que le resulta de interés, implementa Observe para mantener su estado consistente con el sujeto.

Consecuencias:

· Permite modificar sujetos y observadores de manera independiente.

· Reutilizar un sujeto sin reutilizar sus observadores, y viceversa.

· Capacidad de comunicación mediante difusión.

· Acoplamiento abstracto entre el sujeto y el observador. 

· Se pueden añadir/quitar observadores.

· Actualizaciones inesperadas. Una operación en el sujeto puede desencadenar una cascada de cambios en sus observadores.

Patrones relacionados:

· Mediator.

· Singleton.

Etiquetas: , ,

 
posted by Camilo Mojica at 16:20 | Permalink |


0 Comments: