patrones de diseño

25
Diseño con Patrones Yupanqui García, Glen Jasper Diseño de Sistemas

Upload: glen2107

Post on 06-Jun-2015

6.927 views

Category:

Documents


0 download

DESCRIPTION

Diseño de Sistemas

TRANSCRIPT

Page 1: Patrones de Diseño

Diseño con Patrones

Yupanqui García, Glen Jasper

Diseño de Sistemas

Page 2: Patrones de Diseño

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.

Page 3: Patrones de Diseño

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.

Page 4: Patrones de Diseño

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.

Page 5: Patrones de Diseño

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)

Page 6: Patrones de Diseño

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.

Page 7: Patrones de Diseño

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.

Page 8: Patrones de Diseñ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.

Page 9: Patrones de Diseño

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.

Page 10: Patrones de Diseño

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.

Page 11: Patrones de Diseño

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.

Page 12: Patrones de Diseño

12

Clasificación de los patronesGoF (gang of Four) [Gamma]

Page 13: Patrones de Diseño

13

Patrones de diseño fundamentales

Son patrones que no aparecen la tabla definida por Gamma, pero se utilizan habitualmente:

DELEGATION INTERFACE MARKER INTERFACE

Page 14: Patrones de Diseño

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

Page 15: Patrones de Diseño

15

Patrón DELEGATIONEl problema

Page 16: Patrones de Diseño

16

Patrón DELEGATIONLa solución

Page 17: Patrones de Diseño

17

Patrón DELEGATIONImplementación

Page 18: Patrones de Diseño

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”

Page 19: Patrones de Diseño

19

Patrón INTERFACEEl problema

Page 20: Patrones de Diseño

20

Patrón INTERFACELa Solución

Page 21: Patrones de Diseño

21

Patrón INTERFACEImplementación

Page 22: Patrones de Diseño

22

Patrón INTERFACEEjemplo

Page 23: Patrones de Diseño

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.

Page 24: Patrones de Diseño

24

Patrón MARKER INTERFACE

Page 25: Patrones de Diseño

25

Patrón MARKER INTERFACEEjemplo

En Java hay clases “serializables”, “cloneables”, etc. Para ello, basta con que implementen las interfaces Serializable, Cloneable, etc.