Introducción Patrones de Diseño

16
Patrones de Diseño Pablo Cáceres F.

Transcript of Introducción Patrones de Diseño

Page 1: Introducción Patrones de Diseño

Patrones de Diseño

Pablo Cáceres F.

Page 2: Introducción Patrones de Diseño

¿Qué son los patrones de diseño? Patrones de diseño o más comúnmente conocidos

como "Design Patterns“, son soluciones simples y elegantes a problemas específicos y comunes del diseño orientado a objetos.

Son soluciones basadas en la experiencia y que se ha demostrado que funcionan.

Page 3: Introducción Patrones de Diseño

Patrones de Diseño Es evidente que a lo largo de multitud de diseños de

aplicaciones hay problemas que se repiten o que son análogos, es decir, que responden a un cierto patrón

Page 4: Introducción Patrones de Diseño

Objetivos de los patrones Proporcionar catálogos de elementos reusables en el diseño

de sistemas software. Evitar la reiteración en la búsqueda de soluciones a problemas

ya conocidos y solucionados anteriormente. Formalizar un vocabulario común entre diseñadores. Estandarizar el modo en que se realiza el diseño. Facilitar el aprendizaje de las nuevas generaciones de

diseñadores condensando conocimiento ya existente.

Asimismo, no pretenden:

Imponer ciertas alternativas de diseño frente a otras. Eliminar la creatividad inherente al proceso de diseño.

Page 5: Introducción Patrones de Diseño

Categorías de patronesSegún la escala o nivel de abstracción:

Patrones de arquitectura: Aquéllos que expresan un esquema organizativo estructural fundamental para sistemas de software.

Patrones de diseño: Aquéllos que expresan esquemas para definir estructuras de diseño (o sus relaciones) con las que construir sistemas de software.

Dialectos: Patrones de bajo nivel específicos para un lenguaje de programación o entorno concreto.

Page 6: Introducción Patrones de Diseño

Estructuras o plantillas de patrones Nombre del patrón: nombre estándar del patrón por el cual será reconocido en la

comunidad (normalmente se expresan en inglés). Clasificación del patrón: creacional, estructural o de comportamiento. Intención: ¿Qué problema pretende resolver el patrón? También conocido como: Otros nombres de uso común para el patrón. Motivación: Escenario de ejemplo para la aplicación del patrón. Aplicabilidad: Usos comunes y criterios de aplicabilidad del patrón. Estructura: Diagramas de clases oportunos para describir las clases que intervienen en el

patrón. Participantes: Enumeración y descripción de las entidades abstractas (y sus roles) que

participan en el patrón. Colaboraciones: Explicación de las interrelaciones que se dan entre los participantes. Consecuencias: Consecuencias positivas y negativas en el diseño derivadas de la aplicación

del patrón. Implementación: Técnicas o comentarios oportunos de cara a la implementación del

patrón. Código de ejemplo: Código fuente ejemplo de implementación del patrón. Usos conocidos: Ejemplos de sistemas reales que usan el patrón. Patrones relacionados: Referencias cruzadas con otros patrones.

Page 7: Introducción Patrones de Diseño

Catálogos de Patrones de DiseñoLos mas conocidos son:

GOF (Gang of Four)

Core J2EE Patterns

Page 8: Introducción Patrones de Diseño

Core J2EE Patterns – Capa presentación

Page 9: Introducción Patrones de Diseño

Front Controller/ Front Component Objeto que acepta todos los requerimientos de un

cliente y los direcciona a manejadores apropiados. El patrón Front Controller podría dividir la funcionalidad

en 2 diferentes objetos: el Front Controller y el Dispatcher. En ese caso, El Front Controller acepta todos los requerimientos de un cliente y realiza la autenticación, y el Dispatcher direcciona los requerimientos a manejadores apropiada.

Page 10: Introducción Patrones de Diseño

View Helper Un objeto helper que encapsula la lógica de acceso a

datos en beneficio de los componentes de la presentación.

Por ejemplo, los JavaBeans pueden ser usados como patrón View Helper para las páginas JSP.

Page 11: Introducción Patrones de Diseño

Composite view Un objeto vista que está compuesto de otros objetos

vista. Por ejemplo, una página JSP que incluye otras páginas JSP y HTML usando la directiva include o el action include es un patrón Composite View.

Page 12: Introducción Patrones de Diseño

Dispatcher View Es como el patrón de diseño MVC con el controlador

actuando como Front Controller pero con un asunto importante: aquí el Dispatcher (el cual es parte del Front Controller) no usa View Helpers y realiza muy poco trabajo en el manejo de la vista. El manejo de la vista es manejado por los mismos componentes de la Vista.

Page 13: Introducción Patrones de Diseño

Service To Worker Es como el patrón de diseño MVC con el Controlador

actuando como Front Controller pero con una cosa importante: aquí el Dispatcher (el cual es parte del Front Controller) usa View Helpers a gran escala y ayuda en el manejo de la vista.

Page 14: Introducción Patrones de Diseño

Gang Of Four (GoF) En el libro del GoF se propone unos principios fundamentales

de diseño subyacentes a los patrones de diseño que permiten crear aplicaciones más flexibles y robustas:

Programar para interfaces y no para una implementación. Favorecer la composición de objetos frente a la herencia de

clases. Otros principios de gran importancia que se derivan de los

principios anteriores son los que se detallan a continuación: Determinar qué es común y qué es variable (commonality

analisys). Común = Estable

Permitir el reemplazo de lo variable mediante una interfaz común.

Page 15: Introducción Patrones de Diseño

Clasificación de patrones de diseño De Creación: Abstraen el proceso de creación de

instancias de objetos. Ayudan a hacer a un sistema independiente de cómo se crean, se componen y se representan sus objetos.

Estructurales: Tratan con la composición de clases u objetos. Se ocupan de cómo las clases y objetos son utilizados para componer estructuras de mayor tamaño.

De Comportamiento: Caracterizan el modo en que las clases y objetos interactúan y se reparten la responsabilidad. Atañen a los algoritmos y a la asignación de responsabilidades entre objetos.

Page 16: Introducción Patrones de Diseño

Clasificación de patrones de diseño