Descargar

Patrones de Comportamiento del Software

Enviado por Pablo Turmero


Partes: 1, 2, 3, 4

    edu.red 1 Patrones de comportamiento Relacionados con la asignación de responsabilidades entre clases. Enfatizan la colaboración entre objetos. Caracterizan un flujo de control más o menos complejo que será transparente al que utilice el patrón. Basados en herencia: Template Method e Interpreter Basados en composición: Mediator, Observer,..

    edu.red 2 Chain of Responsibility (Cadena de Responsabilidad) Propósito Evita acoplar el emisor de un mensaje a su receptor dándole a más de un objeto la posibilidad de manejar la solicitud. Se define una cadena de objetos, de modo que un objeto pasa la solicitud al siguiente en la cadena hasta que uno la maneja. Motivación Facilidad de ayuda sensible al contexto. El objeto que proporciona la ayuda no es conocido al objeto (p.e. un Button) que inicia la solicitud de ayuda.

    edu.red 3 Cadena de Responsabilidad Motivación

    edu.red 4 Cadena de Responsabilidad

    edu.red 5 Estructura Cadena de Responsabilidad

    edu.red 6 Cadena de Responsabilidad Aplicabilidad Más de un objeto puede manejar una solicitud, y el manejador no se conoce a priori. Se desea enviar una solicitud a uno entre varios objetos sin especificar explícitamente el receptor. El conjunto de objetos que puede manejar una solicitud puede ser especificado dinámicamente.

    edu.red 7 Cadena de Responsabilidad Consecuencias Reduce acoplamiento Proporciona flexibilidad al asignar responsabilidades No se garantiza el manejo de la solicitud

    edu.red 8 Cadena de Responsabilidad Implementación Dos posibles formas de implementar la cadena Definir nuevos enlaces (en Manejador) Usar enlaces existentes (p.e. un objeto composite)

    class ManejadorAyuda { public ManejadorAyuda (ManejadorAyuda s) {sucesor = s;}; public void manejarAyuda () { if (sucesor != null) sucesor.manejarAyuda();}; private ManejadorAyuda sucesor; }

    edu.red 9 Cadena de Responsabilidad Implementación ¿Qué sucede si tenemos diferentes tipos de solicitudes? En Manejador un método para cada solicitud En Manejador un único método con un parámetro que representa el tipo de solicitud, por ejemplo un String. En Manejador un único método que tiene un parámetro de una clase Solicitud que representa la solicitud.

    edu.red 10 Cadena de Responsabilidad Ejemplo 1: Java 1.0 AWT Mecanismo de delegación de eventos: Un evento es pasado al componente donde ocurre que puede manejarlo o lo pasa a su contenedor.

    public boolean action(Event event, Object obj) { if (event.target == test_button) doTestButtonAction(); else if (event.target == exit_button) doExitButtonAction(); else return super.action(event,obj); return true;}

    Partes: 1, 2, 3, 4
    Página siguiente