Patrones de Diseño
description
Transcript of Patrones de Diseño
Diseño con Patrones
Yupanqui García, Glen Jasper
Diseño de Sistemas
2
Introducción
El diseño OO es difícil y el diseño de software orientado a objetos reutilizable lo es aún más.
Los diseñadores expertos no resuelven los problemas desde sus principios; reutilizan soluciones que han funcionado en el pasado.
– Se encuentran patrones de clases y objetos de comunicación recurrentes en muchos sistemas orientados a objetos.
– Estos patrones resuelven problemas de diseño específicos y hacen el diseño flexible y reusable.
3
Definición de un patrón
Alexander(arquitecto/urbanista)
Cada patrón describe un problema que ocurre una y otra vez en nuestro entorno y describe también el núcleo de la solución al problema, de forma que puede utilizarse un millón de veces sin tener que hacer dos veces lo mismo.
4
Definición de un patrón de diseño
[Gamma]
Un patrón de diseño es una descripción de clases y objetos comunicándose entre sí adaptada para resolver un problema de diseño general en un contexto particular.
5
Introducción
Es un tema importante en el desarrollo de software actual: permite capturar la experiencia
Busca ayudar a la comunidad de desarrolladores de software a resolver problemas comunes, creando un cuerpo literario de base
– Crea un lenguaje común para comunicar ideas y experiencia acerca de los problemas y sus soluciones
El uso de patrones ayuda a obtener un software de calidad (reutilización y extensibilidad)
6
Elementos de un patrón
Nombre: describe el problema de diseño. El problema: describe cuándo aplicar el
patrón. La solución: describe los elementos que
componen el diseño, sus relaciones, responsabilidades y colaboración.
7
Ventajas de los patrones de diseño
Son soluciones concretas:– Un catálogo de patrones es un conjunto de recetas de diseño.– Aunque se pueden clasificar, cada patrón es independiente del resto.
Son soluciones técnicas:– Dada una determinada situación, los patrones indican cómo
resolverla mediante un D.O.O.– Existen patrones específicos para un lenguaje determinado, y otros
de carácter más general. Se aplican en situaciones muy comunes:
– Proceden de la experiencia.– Han demostrado su utilidad para resolver problemas que aparecen
frecuentemente en el D.O.O.
8
Ventajas de los patrones de diseño
Son soluciones simples:– Indican cómo resolver un problema particular utilizando un
pequeño número de clases relacionadas de forma determinada.
– No indican cómo diseñar un sistema completo, sino sólo aspectos puntuales del mismo.
Facilitan la reutilización de las clases y del propio diseño:
– Los patrones favorecen la reutilización de clases ya existentes y la programación de clases reutilizables.
– La propia estructura del patrón es reutilizada cada vez que se aplica.
9
Inconvenientes
El uso de un patrón no se refleja claramente en el código:– A partir de la implementación es difícil determinar qué patrón de diseño se
ha utilizado.– No es posible hacer ingeniería inversa.
Referencias a “self”:– Muchos patrones utilizan la delegación de operaciones y esto provoca el
conocido problema del ámbito local de los objetos (self). Es difícil reutilizar la implementación de un patrón:
– Las clases del patrón son roles genéricos, pero en la implementación aparecen clases concretas.
Los patrones suponen cierta sobrecarga de trabajo a la hora de implementar:
– Se usan más clases de las estrictamente necesarias.– A menudo un mensaje se resuelve mediante delegación de varios
mensajes a otros objetos.
10
Clasificación de los patrones
Según su ámbito:– Patrones de clases . Tratan con relaciones de
herencia (estática) entre clases.– Patrones de objetos . Se refieren a relaciones
de composición entre objetos, que pueden cambiar en tiempo de ejecución y son más dinámicas.
11
Clasificación de los patrones
Según su propósito:– De creación: conciernen al proceso de creación
de objetos.– De estructura: tratan la composición de clases
y/o objetos.– De comportamiento: caracterizan las formas en
las que interactúan y reparten responsabilidades las distintas clases u objetos.
12
Clasificación de los patronesGoF (gang of Four) [Gamma]
13
Patrones de diseño fundamentales
Son patrones que no aparecen la tabla definida por Gamma, pero se utilizan habitualmente:
DELEGATION INTERFACE MARKER INTERFACE
14
Patrón DELEGATION
Utilidad:
Cuando se quiere extender y reutilizar la funcionalidad de una clase SIN UTILIZAR LA
HERENCIA Ventajas:
– En vez de herencia múltiple– Cuando una clase que hereda de otra quiere ocultar
algunos de los métodos heredados– Compartir código que NO se puede heredar
15
Patrón DELEGATIONEl problema
16
Patrón DELEGATIONLa solución
17
Patrón DELEGATIONImplementación
18
Patrón INTERFACEUtilidad y Ventajas
Utilidad– Definir un comportamiento independiente de
donde vaya a ser utilizado
Ventajas– Desacople entre comportamiento y clase.– Realización de clases “Utilities”
19
Patrón INTERFACEEl problema
20
Patrón INTERFACELa Solución
21
Patrón INTERFACEImplementación
22
Patrón INTERFACEEjemplo
23
Patrón MARKER INTERFACEUtilidad y Ventajas
Utilidad– Sirve para indicar atributos semánticos de una clase.
Ventajas:– Se puede preguntar si un objeto pertenece a una clase de
un determinado tipo o no.– Habitualmente se utiliza en clases de utilidades que tienen
que determinar algo sobre objetos sin asumir que son instancias de una determinada clase o no.
24
Patrón MARKER INTERFACE
25
Patrón MARKER INTERFACEEjemplo
En Java hay clases “serializables”, “cloneables”, etc. Para ello, basta con que implementen las interfaces Serializable, Cloneable, etc.