Mapa mental
OBSERVER
Contenido del mapa
OBSERVER
PROPÓSITO
- Define una dependencia de uno-a-muchos entre objetos de forma que, cuando un objeto cambia de estado, se notifica a los objetos dependientes para que se actualicen automáticamente
¿QUE ES?
- Es un patrón de diseño
TAMBIÉN CONOCIDO COMO
- Dependents, publishsubscribe
MOTIVACIÓN
- Mantener la consistencia entre objetos relacionados, sin aumentar el acoplamiento entre clases
APLICABILIDAD
- Cuando una abstracción tiene dos aspectos, y uno depende del otro
- Encapsular los aspectos en objetos distintos permite cambiarlos y reutilizarlos
- Cuando cambiar un objeto implica cambiar otros, pero no sabemos exactamente cuántos hay que cambiar
- Cuando un objeto debe ser capaz de notificar algo a otros sin hacer suposiciones sobre quiénes son dichos objetos
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 deben 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 la interfaz de Observer para mantener su estado consistente con el del sujeto
- Subject
CONSECUENCIAS
- Permite modificar sujetos y observadores de manera independiente
- Permite reutilizar un sujeto sin reutilizar sus observadores, y viceversa
- Permite añadir observadores sin tener que cambiar el sujeto ni los demás observadores
- Acoplamiento abstracto entre el sujeto y el observador
- Soporte para broadcast
- El sujeto envía la notificación a todos los observadores suscritos
- Se pueden añadir/quitar observadores
- Actualizaciones inesperadas
- Una operación en el sujeto puede desencadenar una cascada de cambios en sus observadores
- El protocolo no ofrece detalles sobre lo que ha cambiado
IMPLEMENTACIÓN
- Encapsular la semántica de actualizaciones complejas
- Especificar las modificaciones de interés explícitamente
- Evitar protocolos de actualización específicos del observador
- Asegurarse de la consistencia del sujeto antes de una notificación
- Asegurarse de la consistencia del sujeto antes de una notificación
- Referencias perdidas a sujetos que se han eliminado
- Observar más de un sujeto
- Correspondencia entre sujetos y observadores
Información
- Descripción
- Mapa Mental sobre OBSERVER, creado por jaarango446 el 16/03/2015.
- Creado por
- jaarango446
- Visitas
- 1
- Valoración