Departamento de Sistemas Informáticos y Programación Universidad Complutense de Madrid Simulación del patrón … (5)
Editor gráfico: 5ª Iteración Manipulaciones en las figuras Se realizan con la herramienta de selección Esquina superior izquierda = Extender/Encoger Cambia el tamaño de la figura proporcionalmente Esquina inferior derecha = estirar Estira la figura, dejando fija la esquina superior izquierda
Simulación del patrón … (5) Clases iniciales
Simulación del patrón … (5) Escenario 1: Encoger una figura ¿Cómo se encoge la figura seleccionada? Hay una figura seleccionada y tenemos activa la herramienta de selección MousePressed Si se ha pulsado sobre la figura seleccionada Obtener el tipo de manipulación que realizaremos sobre la figura MouseDragged Si el manipulador es de tipo “encoger” Encoger la figura
Simulación del patrón … (5) Escenario 2: Estirar una figura ¿Cómo se estira la figura seleccionada? Hay una figura seleccionada y tenemos activa la herramienta de selección MousePressed Si se ha pulsado sobre la figura seleccionada Obtener el tipo de manipulación que realizaremos sobre la figura MouseDragged Si el manipulador es de tipo “estirar” Estirar la figura
Simulación del patrón … (5) Escenario 3: Mover una figura ¿Cómo se estira la figura seleccionada? Hay una figura seleccionada y tenemos activa la herramienta de selección MousePressed Si se ha pulsado sobre la figura seleccionada Obtener el tipo de manipulación que realizaremos sobre la figura MouseDragged Si el manipulador es de tipo “mover” Mover la figura
Simulación del patrón … (5) Conclusiones de este diseño De nuevo, código spaghetti if…then…else if La misma herramienta ha de usar las figuras de varias formas distintas Hay que adaptar su comportamiento al tipo de manipulación Necesitamos estructurar las clases de otra forma…
Simulación del patrón … (5) Solución: Patrón Adapter Propósito: Convierte la interfaz de una clase a la que esperan los clientes Roles (basado en composición): Target: Define la interfaz que espera el cliente Adaptee: Implementa la interfaz que queremos adaptar Adapter: Adapta la interfaz de adaptee a target
Simulación del patrón … (5) Nuevas clases
Simulación del patrón … (5) Escenario 1, 2 y 3 (after): Manipular una figura ¿Cómo se manipula (en general) la figura seleccionada? Hay una figura seleccionada y tenemos activa la herramienta de selección MousePressed Si se ha pulsado sobre la figura seleccionada Obtener el Manipulador que realizaremos sobre la figura MouseDragged Invocar el método de manipulación del Manipulador
Simulación del patrón … (5) Conclusiones Se ha eliminado el código spaguetti Se ha adaptado toda la funcionalidad para toda la jerarquía de figuras de una sola vez Problema Buscar la interfaz más “estricta” posible Redefinir el comportamiento de la clase adaptada puede suponer revisar la interfaz
Simulación del patrón … (5) Conclusions