Departamento de Sistemas Informáticos y Programación Universidad Complutense de Madrid Simulación del patrón … (3)
Editor gráfico: 3ª Iteración Información sobre las dimensiones actuales de una figura Línea de edición Sólo se presenta la información de la última figura creada o seleccionada Actualización de la información Cuando seleccionamos una figura Cuando estamos creando una figura
Simulación del patrón … (3) Clases iniciales
Simulación del patrón … (3) Escenario 1: Creación de una figura ¿Cómo actualizaremos el área de texto? MouseDragged Cada vez que lo ejecutamos, actualizaremos la información del cuadro de texto
Simulación del patrón … (3) Escenario 2: Selección de una figura ¿Cómo actualizaremos el área de texto? MousePressed Si se ha pulsado sobre una figura Seleccionarla Actualizar el área de texto
Simulación del patrón … (3) Cambio de planes… Preferimos guardar todos los cambios que se vayan produciendo Área de texto Una línea de información por cada cambio que se produzca Actualización de la información Cuando seleccionamos una figura Cuando estamos creando una figura
Simulación del patrón … (3) REPETIMOS: Escenario 1 y 2 ¿Cómo actualizaremos el área de texto? Creación de una figura MouseDragged Cada vez que lo ejecutamos, actualizaremos la información del cuadro de texto MousePressed Si se ha pulsado sobre una figura Seleccionarla Actualizar el área de texto
Simulación del patrón … (3) Conclusiones de este diseño ¿Y si volvemos a cambiar el elemento con el que presentamos? ¿Y si quiero presentar la misma información en más de un sitio? Alto acoplamiento entre la figura y el medio de presentación Cambios en el medio de presentación supone revisar el código de la figura en busca de los puntos en los que ha cambiado Necesitamos resolver el comportamiento de la aplicación de otra forma…
Simulación del patrón … (3) Solución: Patrón Observer Propósito: permite definir dependencias uno a muchos de forma que los cambios en un objeto se comuniquen a los objetos que dependen de él Roles: Subject: Conoce su lista de Observers y se encarga de notificarles sus cambios de estado Observer: Define la interfaz de actualización debido a las notificaciones del Subject ConcreteObserver Implementa la interfaz anterior Conoce al Subject y le pregunta por su estado para actualizar el suyo en consonacia
Simulación del patrón … (3) Solución: Patrón Observer
Simulación del patrón … (3) Nuevas clases
Simulación del patrón … (3) Escenarios 1 y 2 (after) ¿Cómo actualizaremos el área de texto? Creación de una figura MouseDragged Cada vez que lo ejecutamos, actualizaremos la información del cuadro de texto MousePressed Si se ha pulsado sobre una figura Seleccionarla Actualizar el área de texto
Simulación del patrón … (3) Conclusiones Desacoplamiento entre la Figura y sus observadores Observadores han de conocer la interfaz de Figura Figura sólo realiza la actualización sin conocer el tipo de observador ¿Cuándo podemos añadir los observers a la figura? Cuidado!! Demasiadas actualizaciones por pequeños cambios de estados Observers que reciban información más concreta que la figura en sí misma
Simulación del patrón … (3) Conclusions