observer design pattern

17
OBSERVER DESIGN PATTERN Yenifer Barco Castrillón

Upload: yenifer-castrillon

Post on 12-Apr-2017

74 views

Category:

Education


0 download

TRANSCRIPT

Page 1: Observer design pattern

OBSERVER DESIGN PATTERN

Yenifer Barco Castrillón

Page 2: Observer design pattern

DESING PATTERN

Los Patrones de diseño son herramientas para solucionar problemas de Diseño enfocados al desarrollo de software, estos patrones deben ser reusables permitiendo así que sean adaptados a diferentes problemáticas.Existen 3 grupos de patrones: Creacionales: Giran en torno a la creación de Objetos Estructurales: Se enfocan en la estructura de clases y objetos

que las componen De Comportamiento: Definen el modo en que las clases y

objetos son relacionados, el comportamiento he interacción entre ellos.

Page 3: Observer design pattern

OBSERVER

Es un patrón de comportamiento permite actualizar automáticamente el estado de un objeto dependiendo del estado de un objeto principal, cuando el objeto principal cambia sus objetos dependientes se actualizan.

Page 4: Observer design pattern

DIAGRAMA DE CLASES

Page 5: Observer design pattern

SIGNIFICADO LINEAS

(#) Los atributos/operaciones protegidos están visibles para las clases derivadas de la original. 

Page 6: Observer design pattern

PARTICIPANTES

Tendremos sujetos concretos cuyos cambios pueden resultar interesantes a otros y observadores a los que al menos es interesa estar pendientes de un elemento y en un momento dado, reaccionar ante sus notificaciones de cambio. Todos los sujetos tienen en común que un conjunto de objetos quieren estar pendientes de ellos. Cualquier

elemento que quiera ser observado tiene que permitir indicar:1. “Estoy interesado en tus cambios”.2. “Ya no estoy interesado en tus cambios”.

Page 7: Observer design pattern

El observable tiene que tener, además, un mecanismo de aviso a los interesados.

Sujeto (Subject): El sujeto proporciona una interfaz para agregar (attach) y eliminar (detach) observadores. El Sujeto conoce a todos sus observadores.

Observador (Observer): Define el método que usa el sujeto para notificar cambios en su estado (update/notify).

Page 8: Observer design pattern

Sujeto Concreto (ConcreteSubject): Mantiene el estado de interés para los observadores concretos y los notifica cuando cambia su estado. No tienen porque ser elementos de la misma jerarquía.

Observador Concreto (ConcreteObserver): Mantiene una referencia al sujeto concreto e implementa la interfaz de actualización, es decir, guardan la referencia del objeto que observan, así en caso de ser notificados de algún cambio, pueden preguntar sobre este cambio.

Page 9: Observer design pattern

METODOS IMORTANTESaddObserver (Observador o): Añadir observadores en el conjunto de observadores de este tema u objeto observalbel.deleteObserver (Observador o): Borrar observadores en el conjunto de los observadores.hasChanged (): Comprobar si el objeto ha cambiado.clearChanged (): Este método indicará que sujeto no tiene cambios o todos los observadores ha sido notificada cuando se realizan cambios.notifyObservers (): Notificar a todos los observadores si el objeto ha cambiado.Update (Observable Ob, Object arg): Este metodo es llamado cuando el sujeto se cambia.Interfaz pública Observador: Cualquier clase que implemente esta interfaz debe ser notificado cuando el objeto sujeto o cambiar su estado observable.

Page 10: Observer design pattern

PROBLEMACuando tenemos una dependencia de 1 a muchos entre objetos, y se espera que cuando el estado de un objeto cambie, todos los objetos dependientes de este también cambien de forma automática.

EJEMPLO:Se tiene una aplicación de venta de productos administrada por diferentes vendedores con diferentes aplicativos, se espera que cada vez que cambie la cantidad de productos disponibles, la aplicación de cada vendedor automáticamente actualicé el modulo de ventas con los nuevos.

Page 11: Observer design pattern

SOLUCIÓN

Se aplica el patrón observador para desacoplar la clase que contenga objetos dependientes, estableciendo relaciones entre los objetos, para esto se tiene una clase SujetoConcreto que será el objeto principal y tendremos los objetos cliente o dependientes que serian de clase ObservadorConcreto, cuando el estado del SujetoConcreto cambia, se envía una señal a cada uno de sus Observadores y estos automáticamente cambian su estado basados en el estado del objeto principal.

Page 12: Observer design pattern

EJEMPLO 1

Patrón Observer utiliza tres clases de actores. Asunto, Observador y cliente. El sujeto es un objeto que tiene métodos para unir y separar los observadores a un objeto de cliente. Hemos creado una clase abstracta Observador y una clase concreta Asunto que se está extendiendo la clase Observador.ObserverPatternDemo , nuestra clase de demostración, utilizará Asunto objeto de clase y concreto para mostrar el patrón de observador en la acción.

Page 13: Observer design pattern
Page 14: Observer design pattern

SOLUCIÓN

Paso 1 – Crear la clase Subject.Paso 2 - Crear la clase Observer.Paso 3 – Crear las clases de concreteObserver, en este caso: hexaObserver, BinaryObserver y OctalObserver.Paso 4 – Crear la clase ObserverPatternDemo.

Page 15: Observer design pattern

EJEMPLO 2

Usted tiene un préstamo en el que la tasa de interés está sujeta a cambios y cuando cambia, Préstamo notifique al periódico o Internet los medios de comunicación para mostrar la nueva tasa de interés del préstamo. Para implementar este tenemos un Asunto de interfaz que contiene métodos para añadir, eliminar y notificar a los observadores y un Observador de interfaz que contiene la actualización (interés int) método que será llamado por la aplicación Asunto cuando los cambios de tipos de interés.

Page 16: Observer design pattern

SOLUCIÓNPaso 1 – Crear la interfaz Observador.Paso 2 - Crear la interfaz Asunto.Paso 3 – Crear la clase Prestamo que extiende de la interface Asunto.Paso 4 – Crear la clase Newspaper e Internet que extienden de la interface Observador.Paso 5 – Crear la clase ObserverTest la cual contiene el main.

RESULTADO:

Page 17: Observer design pattern

Gracias por su atención