patrones de diseño

Post on 06-Jun-2015

6.927 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Diseño de Sistemas

TRANSCRIPT

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.

top related