You are on page 1of 25

Diseño con

Patrones
Diseño de Sistemas

Yupanqui García, Glen Jasper


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.

2
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.

3
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.

4
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)

5
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.

6
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.

7
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.

8
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.

9
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.

10
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.

11
Clasificación de los patrones
GoF (gang of Four) [Gamma]

12
Patrones de diseño fundamentales

Son patrones que no aparecen la tabla


definida por Gamma, pero se utilizan
habitualmente:
 DELEGATION
 INTERFACE
 MARKER INTERFACE

13
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

14
Patrón DELEGATION
El problema

15
Patrón DELEGATION
La solución

16
Patrón DELEGATION
Implementación

17
Patrón INTERFACE
Utilidad y Ventajas

 Utilidad
– Definir un comportamiento independiente de
donde vaya a ser utilizado
 Ventajas
– Desacople entre comportamiento y clase.
– Realización de clases “Utilities”

18
Patrón INTERFACE
El problema

19
Patrón INTERFACE
La Solución

20
Patrón INTERFACE
Implementación

21
Patrón INTERFACE
Ejemplo

22
Patrón MARKER INTERFACE
Utilidad 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.

23
Patrón MARKER INTERFACE

24
Patrón MARKER INTERFACE
Ejemplo

En Java hay clases “serializables”,


“cloneables”, etc. Para ello, basta con que
implementen las interfaces Serializable,
Cloneable, etc.

25

You might also like