Documentos de Académico
Documentos de Profesional
Documentos de Cultura
DISEÑO DE SISTEMAS
OBSERVER: ESTRUCTURA
DISEÑO DE SISTEMAS
OBSERVER: ESTRUCTURA
Subject
conoce sus observadores. Un Sujeto (Subject) puede ser observado por
cualquier número de objetos Observer.Proporciona una interfaz para conectar
y desconectar los objetos Observer.
ConcreteSubject
Almacena el estado de interés del ConcreteObserver . Envía una notificación
a los observadores cuando hay cambios de estado
Observer
Define una interfaz de actualización de los objetos que deben ser notificados
de cambios en el Subject
ConcreteObserver
Mantiene una referencia a un objeto de ConcreteSubject.
Almacena el estado que debería permanecer consistente con el Subject
Implementa el Observador (Observer) actualizando la interfaz para mantener
su estado consistente con el Subject
DISEÑO DE SISTEMAS
OBSERVER
Ejemplo
DISEÑO DE SISTEMAS
OBSERVER
• La única cosa que el objeto Sujeto conoce en relación al objeto
observador, es que este implementa una determinada interface.
• El objeto Sujeto es único, y cambia de estado cada vez que recibe una
nueva información sobre los cambios de temperatura, humedad y presión
y debe remitir este objeto a Observadores que generalmente son de
estructura diferente, por lo tanto la información debe mandarse a una
interface que los nuclee.
• Se puede agregar nuevos objetos Observadores en cualquier momento,
ya que el objeto Sujeto mantiene una lista de que implementa la interface
Observer, pudiéndose agregar todos los objetos Observadores que se
deseen. Lo mismo sucede con los objetos Observadores que necesitan
ser dados de baja.
• Los Observadores deben requerir ser dados de baja en la lista del Sujeto
y también cuando en ella no están, y quieren estar, deben requerir al
Sujeto que los incorpore.
DISEÑO DE SISTEMAS
OBSERVER
• No se necesita modificar el objeto Sujeto, cuando se agregan nuevos tipos
de objetos Observadores, sólo se debería adicionar el nuevo tipo en la
lista del objeto Sujeto, e implementar el nuevo tipo de clase a la interface
Observer.
• Los Observadores son dependientes del Sujeto, en función, de que recién,
cuando el Sujeto les notifique el nuevo estado, recién los Observadores
podrán expresar sus diferentes formas de expresión, sobre un mismo
estado del objeto Sujeto.
• El que se agregue nuevos Observers no altera, ni modifica en nada el
comportamiento tanto del Sujeto como de los anteriores Observers.
• Se puede reusar objetos Sujetos o Observadores sin que ninguno afecte
al otro; jamás habrá interferencia entre ellos…. esto se debe a que están
débilmente acoplados.
• Los cambios en uno, (cualesquiera fuera), jamás afectarán al otro.
DISEÑO DE SISTEMAS
OBSERVER
DISEÑO DE SISTEMAS
OBSERVER
Biblioteca Libro
+ devuelveLibro() : void
DISEÑO DE SISTEMAS
OBSERVER
«interface»
iLibroMalEstado
+ update() : void
DISEÑO DE SISTEMAS
OBSERVER
Entonces ya tenemos los observadores…
Falta el sujeto que avisará a los
observadores:
«interface» «interface»
Subject iLibroMalEstado
agregar_observador() : void observer update() : void
+ +
+ eliminar_observador() : void
+ notificar() : void
AlarmaLibro
Administracion Compras Stock
+ agregar_observador() : void
+ eliminar_observador() : void + update() : void + update() : void + update() : void
+ notificar() : void
DISEÑO DE SISTEMAS
OBSERVER
DISEÑO DE SISTEMAS
OBSERVER
DISEÑO DE SISTEMAS