clase ii patrones de diseño
TRANSCRIPT
Patrones de Diseño
Pablo Cáceres F.
¿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.
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
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.
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.
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.
Catálogos de Patrones de Diseño
Los mas conocidos son:
GOF (Gang of Four)
Core J2EE Patterns
Core J2EE Patterns – Capa presentación
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.
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.
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.
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.
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.
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.
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.