Sie sind auf Seite 1von 27

Pgina 1

Patrones de Diseo
Tecnologa de Objetos
PATRONES DE
PATRONES DE
DISEO
DISEO
Pgina 2
Patrones de Diseo
Experiencia en Diseo
Los analistas/diseadores con gran
experiencia aplican, de forma mayormente
intuitiva y automtica, criterios precisos que,
de forma global, solucionan de forma
elegante y efectiva los problemas de
modelado software de sistemas reales.
Usualmente estos diseadores utilizan
mtodos, estructuras y subsistemas que son,
a la vez, herramientas del diseo y partes de
la solucin final, de una manera que
dficilmente puede transmitirse, en un sentido
formal, a especialistas menos expertos.
Pgina 3
Patrones de Diseo
Problemas Repetidos
Los ingenieros de software se enfrentan
cada da a multitud de problemas de
distinto calibre.
La efectividad de un ingeniero se
mide por su rapidez y acierto en la
diagnosis, identificacin y resolucin de
tales problemas.
El mejor ingeniero es el que ms
reutiliza la misma solucin -matizada-
para resolver problemas similares.
Pgina 4
Patrones de Diseo
Reinventar la Rueda
La Orientacin-a-Objetos propugna no
reinventar la rueda en la pura codificacin
respecto de la resolucin de problemas. Por
que, entonces, reinventarla para el ataque
genrico a problemas comunes de anlisis,
diseo e implementacin?
Debe existir alguna forma de comunicar al
resto de los ingenieros los resultados
encontrados tras mucho esfuerzo por
alguno(s) de ellos.
Se necesita, al fin, algn esquema de docu-
mentacin que permita tal comunicacin.
Pgina 5
Patrones de Diseo
Documentacin?
La mera documentacin de lneas de cdigo
resulta insuficiente, pues nicamente
fomenta el uso de la tcnica de cut & paste.
El tipo de los problemas y soluciones a
documentar es muy variado:
PROGRAMACIN
ANLISIS
ARQUITECTURA
GESTIN, ETC.
Se necesita un formato de documentacin
nico que ane conceptualmente estos
distintos tipos.
Pgina 6
Patrones de Diseo
La Esencia del Diseo
Los diseadores bien-dotados poseen un
sentido especial que detecta la completitud,
en un sentido eminentemente arquitectnico,
de un determinado diseo, con
independencia de las posibles mtricas y
paradigmas utilizados.
Naturalmente lo ideal sera extraer la
quintaesencia de estos afortunados diseos
para formular una suerte de blsamo de
fierabrs que pudieran ingerir los
diseadores noveles.
Pgina 7
Patrones de Diseo
Christopher Alexander
Los trabajos de Alexander intentan identificar
y resolver, en un marco descriptivo formal
aunque no-exacto, problemas esenciales en
el dominio de la arquitectura.
Ha parecido adecuado a los diseadores
software trasladar muchas de las ideas de
Alexander al dominio software.
Alexander ha servido, en realidad, de
catalizador de ciertas tendencias
constructivas utilizadas en el diseo de
sistemas software.
Pgina 8
Patrones de Diseo
El Libro AIS

A A Pattern Language Pattern Language: :
Towns Towns/ /Building Building/ /Construction Construction, de Christopher
Alexander, Sara Ishikawa, Murray Silverstein,
Max Jacobson, Ingrid Fiksdahl-King y Shlomo
Angel, 1977, Oxford University Press. 253
patrones, con el formato especfico pro-
puesto por Alexander, se dan cita en este
texto, en el que adems se propugna una
integracin del mejor-vivir con el medio fsico
circundante: gente-gente-patrones-gente.
Cuando se habla del libro de Alexander o
del libro AIS (las iniciales de los primeros
autores) se refieren a esta obra.
Pgina 9
Patrones de Diseo
La Calidad sin Nombre
Existe en verdad una parte comn en los
buenos diseos, a veces tan dispares entre
s? Christopher Alexander as lo afirma, y da
a esta parte la elusiva calificacin de la
calidad que no se puede nombrar.
Alexander sostiene que existe un algo
innombrable que no puede ser modelado
nicamente por medio de un conjunto arbi-
trario de requerimientos. Los sistemas
poseeran, as, una esencia cualitativa que les
otorgara verdadera identidad y equilibrara
sus fuerzas internas.
Pgina 10
Patrones de Diseo
Calidad Adjetivada

Si bien la calidad intrnseca de los
sistemas reales no tiene nombre,
stos pueden adjetivarse, siempre
segn Alexander, en razn de las
caractersticas que tales poseen:
vivos, completos, libres, exactos,
vivos, completos, libres, exactos,
despersonalizados
despersonalizados
y eternos
y eternos.
Pgina 11
Patrones de Diseo
Soluciones Reutilizables
Cada patrn describe un problema que
Cada patrn describe un problema que
ocurre una y otra vez en nuestro
ocurre una y otra vez en nuestro
entorno, para describir despus el
entorno, para describir despus el
ncleo de la solucin a ese problema,
ncleo de la solucin a ese problema,
de tal manera que esa solucin pueda
de tal manera que esa solucin pueda
ser usada ms de un milln de veces
ser usada ms de un milln de veces
sin hacerlo siquiera dos veces de la
sin hacerlo siquiera dos veces de la
misma forma.
misma forma.
Christopher Alexander
Pgina 12
Patrones de Diseo
Un Ejemplo Rural
Si nos fijamos en las construcciones de una
determinada zona rural observaremos que
todas ellas poseen apariencias parejas
(tejados de pizarra con gran pendiente, etc.),
pese a que los requerimientos personales por
fuerza han debido ser distintos. De alguna
manera la esencia del diseo se ha copiado
de una construccin a otra, y a esta esencia
se plegan de forma natural los diversos
requerimientos. Dirase aqu que existe un
patrn que soluciona de forma simple y
efectiva los problemas de construccin en tal
zona.
Pgina 13
Patrones de Diseo
El Smil Textil
Un patrn de diseo es
Una solucin a
Una solucin a
un problema en un determinado
un problema en un determinado
contexto
contexto. Tal solucin es, empero, a la
vez parte del qu y del cmo del sistema
completo a construir: esto es, la pieza que
conforma el patrn software es como la pieza
del patrn de sastre que se utiliza para
confeccionar vestidos y trajes, pues tal pieza,
aparte de contener las especificaciones de
corte y confeccin del producto final,
representa a la vez, en apariencia, una parte
de tal producto textil.
Pgina 14
Patrones de Diseo
Patrn Documentario (I)

Intencin Intencin: sucinta descripcin de lo que se
pretende conseguir con el patrn.

Tambin Conocido como Tambin Conocido como: otros nombres del
mismo patrn.

Motivo Motivo: explicacin justificativa de la
necesidad de que el patrn exista como
entidad autnoma.

Aplicabilidad Aplicabilidad: lista de usos para los que
resulta especialmente adecuado el patrn que
se describe.
Pgina 15
Patrones de Diseo
Patrn Documentario (II)

Estructura Estructura: descripcin grfica de los
comportamientos, acciones y relaciones de
los objetos que participan en el patrn.

Participantes Participantes: diccionario de las partes que
componen el patrn.

Colaboraciones Colaboraciones: diccionario de las relaciones
e interacciones entre los participantes en un
patrn.

Consecuencias Consecuencias: detalle de los posibles
beneficios y perjuicios que pueden derivarse
del uso del patrn.
Pgina 16
Patrones de Diseo
Patrn Documentario (III)

Implementacin Implementacin: detalle de las posibles
implementaciones y catlogo de las
decisiones de diseo en la codificacin de
soluciones concretas basadas en el patrn.

Cdigo de Ejemplo Cdigo de Ejemplo: planteamiento de cdigo
prctico referido a un ejemplo (o ejemplos)
suficientemente representativo del uso del
patrn.

Usos Conocidos Usos Conocidos: detalle de bibliotecas,
productos y sistemas en que se ha utilizado
el patrn.
Pgina 17
Patrones de Diseo
Patrn Documentario (IV)

Patrones Relacionados Patrones Relacionados: referencias a otros
patrones que bien son directamente
utilizados por el descrito bien representan
soluciones complementarias o
suplementarias al mismo.
Pgina 18
Patrones de Diseo
Catlogos de Patrones
Si aceptamos que los patrones pueden
resultar tiles en el desarrollo de
software, el siguiente paso es reunirlos
en catlogos de forma que resulten
accesibles mediante distintos criterios,
pues lo que necesitamos no es tan
slo la completa descripcin de cada
uno de los patrones sino,
esencialmente, la correspondencia
entre un problema real y un patrn (o
conjunto de patrones) determinado.
Pgina 19
Patrones de Diseo
La Curva de Aprendizaje
Lo que se pretende con un catlogo de
patrones no es favorecer al diseador experto
(que quizs no necesite en absoluto de los
patrones), sino ms bien ayudar al diseador
inexperto a adquirir con cierta rapidez las
habilidades de aqul, como tambin
comunicar al posible cliente, si es el caso, las
decisiones de diseo de forma clara y
autosuficiente.
Un Catlogo de Patrones es un medio para
comunicar la experiencia de forma efectiva,
reduciendo lo que se conoce como curva de
aprendizaje del diseo.
Pgina 20
Patrones de Diseo
El Libro GOF
Existen varios catlogos de patrones pero la
capacidad de eleccin todava se basa en el
conocimiento completo de los mismos.
El catlogo de patrones ms famoso es el
contenido en el libro
Design Patterns
Design Patterns
:
:
Elements of Reusable Object
Elements of Reusable Object
-
-
Oriented
Oriented
Software
Software, de Erich Gamma,
Richard Helm, Ralph Johnson y John
Vlissides, 1995, Addison-Wesley, 0-201-
63361-2, tambin conocido como el LIBRO LIBRO
GOF GOF (Gang-Of-Four Book).
Pgina 21
Patrones de Diseo
Tipos de Patrones
SEGN EL LIBRO GOF: SEGN EL LIBRO GOF:

De Creacin
De Creacin: abstraen el proceso de
creacin de instancias.

Estructurales
Estructurales: se ocupan de cmo
clases y objetos son utilizados para
componer estructuras de mayor
tamao.

De Comportamiento
De Comportamiento: ataen a los
algoritmos y a la asignacin de
responsabilidades entre objetos.
Pgina 22
Patrones de Diseo
Patrones de Creacin (I)
Abstract Factory: provee un interfaz para
crear familias de objetos dependientes o
relacionados sin necesidad de especificar
sus clases concretas (p.e.: widgets en
distintas plataformas)
Builder: separa la construccin de un objeto
complejo de su representacin, de tal manera
que el mismo proceso de construccin puede
crear diferentes representaciones (p.e.:
conversores de formatos de texto)
Pgina 23
Patrones de Diseo
Patrones de Creacin (II)
Factory Method: define un intefaz para crear
un objeto, pero deja que las subclases
decidan qu clase instanciar. Este patrn
delega la instanciacin de una clase a sus
subclases (como un constructor virtual).
Prototype: especifica las clases de objetos a
crear usando un ejemplar prototpico, y crea
nuevos objetos copiando este prototipo.
Singleton: asegura que una clase slo tendr
una instancia, y provee un punto global de
acceso a la misma.
Pgina 24
Patrones de Diseo
Patrones Estructurales
Adapter
Bridge
Composite
Decorator
Facade
Flyweight
Proxy
Pgina 25
Patrones de Diseo
Patrones de Comportamiento
Chain of Responsibility
Command
Interpreter
Iterator
Mediator
Memento
Observer
State, Strategy
Template Method
Visitor
Pgina 26
Patrones de Diseo
Breves Notas

Patrones como moda?


Mejor como Intencin.

Patrones como solucin?


Mejor como ncleo de
soluciones.

Patrones como normas?


Mejor como sugerencias.
Pgina 27
Patrones de Diseo
Patrones de Diseo Software
PREGUNTAS
PREGUNTAS
PREGUNTAS

Das könnte Ihnen auch gefallen