P. 1
Patrones de Diseño

Patrones de Diseño

5.0

|Views: 7.019|Likes:
Publicado porglen2107
Diseño de Sistemas
Diseño de Sistemas

More info:

Categories:Types, School Work
Published by: glen2107 on Jul 14, 2008
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PPT, PDF, TXT or read online from Scribd
See more
See less

07/24/2013

pdf

text

original

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. 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. Proceden de la experiencia. Han demostrado su utilidad para resolver problemas que aparecen frecuentemente en el D.O.O.

Son soluciones técnicas:
– –

Se aplican en situaciones muy comunes:
– –

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. Muchos patrones utilizan la delegación de operaciones y esto provoca el conocido problema del ámbito local de los objetos (self). Las clases del patrón son roles genéricos, pero en la implementación aparecen clases concretas.

Referencias a “self”:

Es difícil reutilizar la implementación de un patrón:

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 Desacople entre comportamiento y clase. Realización de clases “Utilities”

 Ventajas
– –

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

Ventajas:
– –

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're Reading a Free Preview

Descarga
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->