Clase ii patrones de diseño

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

Transcript of Clase ii patrones de diseño

Page 1: Clase ii patrones de diseño

Patrones de Diseño

Pablo Cáceres F.

Page 2: Clase ii 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: Clase ii 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: Clase ii 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: Clase ii patrones de diseño

Categorías de patrones

Segú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: Clase ii 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: Clase ii patrones de diseño

Catálogos de Patrones de Diseño

Los mas conocidos son:

GOF (Gang of Four)

Core J2EE Patterns

Page 8: Clase ii patrones de diseño

Core J2EE Patterns – Capa presentación

Page 9: Clase ii 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: Clase ii 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: Clase ii 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: Clase ii 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 13: Clase ii 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 14: Clase ii 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: Clase ii 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: Clase ii patrones de diseño