12 Plantilla de definición Aplicabilidad ¿En qué situaciones puede aplicarse?, ¿Cómo las reconoces?, ejemplos de diseños que pueden mejorarse. Estructura Diagramas de clases que ilustran la estructura Participantes Clases que participan y sus responsabilidades Colaboraciones Diagramas de interacción que muestran cómo colaboran los participantes.
13 Plantilla de definición Consecuencias ¿Cómo alcanza el patrón sus objetivos?, ¿Cuáles son los compromisos y resultados de usar el patrón?, Alternativas, Costes y Beneficios Implementación Técnicas, heurísticas y consejos para la implementación ¿Hay cuestiones dependientes del lenguaje? Ejemplo de Código Usos conocidos Patrones relacionados
14 Clasificación Ámbito (Gp:) Propósito (Gp:) Estructural (Gp:) Comportamiento (Gp:) Creación (Gp:) Herencia (Gp:) Compo- sición (Gp:) Factory Method (Gp:) Adapter (Gp:) Interpreter Template Method (Gp:) Abstract Factory Builder Prototype Singleton (Gp:) Adapter Bridge Composite Decorator Facade Flyweight Proxy (Gp:) Chain of Responsability Command Iterator Mediator Memento Observer State Strategy Visitor
15 ¿A qué ayudan los patrones? Encontrar clases de diseño Especificar interfaces “Programar hacia la interfaz, no hacia la implementación” No declarar variables de clases concretas sino abstractas. Patrones de creación permiten que un sistema esté basado en términos de interfaces y no en implementaciones. Favorecen la reutilización a través de la composición en vez de la herencia
16 Herencia vs. Clientela Relación fija
Reuso “caja blanca” Relación variable Reuso “caja negra” Clase abstracta Interfaz
17 ¿A qué ayudan los patrones? Utilizan bastante la delegación Forma de hacer que la composición sea tan potente como la herencia. Un objeto receptor delega operaciones en su delegado Presente en muchos patrones: State, Strategy, Visitor,.. Caso extremo de composición, muestra que siempre puede sustituirse la herencia por composición.
18 Delegación
19 Delegación ()
20 ¿A qué ayudan los patrones? La clave para la reutilización es anticiparse a los nuevos requisitos y cambios, de modo que los sistemas evolucionen de forma adecuada. Cada patrón permite que algunos aspectos de la estructura del sistema puedan cambiar de forma independiente a otros aspectos. Facilitan reuso interno, extensibilidad y mantenimiento.
21 Causas comunes de rediseño i) Crear un objeto indicando la clase. ii) Dependencia de operaciones específicas iii) Dependencia de plataformas hardware o software iv) Dependencia sobre representación de objetos. v) Dependencias de algoritmos vi) Acoplamiento fuerte entre clases vii) Extender funcionalidad mediante subclases viii) Incapacidad de cambiar clases convenientemente
22 Patrones frente a esos peligros i) Abstract factory, Method factory, Prototype ii) Chain of Responsability, Command iii) Abstract factory, Bridge iv) Abstract factory, Bridge, Memento, Proxy, v) Builder, Iterator, Strategy, Template Method, Visitor vi) Abstract factory, Bridge, Chain of Responsability, Command, Facade, Mediator, Observer vii) Bridge, Chain of Responsability, Composite, Decorator, Observer, Strategy viii) Adapter, Decorator, Visitor
23 ¿Cómo seleccionar un patrón? Considera de que forma los patrones resuelven problemas de diseño Lee la sección que describe el propósito de cada patrón Estudia las interrelaciones entre patrones Analiza patrones con el mismo propósito Examina las causas de rediseñar Considera que debería ser variable en tu diseño
24 ¿Cómo usar un patrón? Lee el patrón, todos sus apartados, para coger una visión global. Estudia la Estructura, Participantes y Colaboraciones Mira el ejemplo de código Asocia a cada participante del patrón un elemento software de tu aplicación. Implementa las clases y métodos relacionados con el patrón.
Página anterior | Volver al principio del trabajo | Página siguiente |