Documentos de Académico
Documentos de Profesional
Documentos de Cultura
2 14pdoo
2 14pdoo
2 14pdoo
Patrones de creacin
El software cambia
Para anticiparse a los cambios en los requisitos hay que
disear pensando en qu aspectos pueden cambiar
Los patrones de diseo estn orientados al cambio
Patrones de creacin
Patrones
Cmo llegar a ser un maestro de ajedrez
Sin embargo, para llegar a ser un maestro, hay que estudiar las
partidas de otros maestros
Patrones de creacin
Patrones
Cmo llegar a ser un maestro del software
Sin embargo, para llegar a ser un maestro, hay que estudiar los
diseos de otros maestros
Patrones de creacin
Patrones
Un patrn es:
Patrones de creacin
Lenguajes de patrones
Patrones de creacin
El software cambia
Patrones de creacin
Clasificacin de patrones
Patrones arquitecturales
Patrones de diseo
Patrones de creacin
Ejemplos de patrones
Patrones arquitecturales
Jerarqua de capas
Tuberas y filtros
Cliente/Servidor
Maestro-Esclavo
Control centralizado y
distribuido
Patrones elementales
(idioms)
Patrones de diseo
Modularidad
Interfaces mnimas
Encapsulacin
Objetos
Acciones y Eventos
Concurrencia
Proxies
Factoras
Adaptadores
Composicin
Broker
Patrones de creacin
10
Patrones y Armazones
Patrones de creacin
11
Armazones (Frameworks)
Caractersticas
Patrones de creacin
12
Armazones (Frameworks)
Diferencias con bibliotecas
LGI CA
ESPECFICA
DE LA
APLICACIN
GUI
GUI
BASE DE
DATOS
MATH
BUCLE DE
EVENTOS
MATH
BUCLE DE
EVENTOS
invoca
LGI CA
ESPECFICA
DE LA
APLICACIN
invoca
ADTs
ADTs
BASE DE DATOS
Arquitectura basada en
biblioteca de clases
" reutilizacin de cdigo
Arquitectura basada en
armazn
" reutilizacin de diseo y cdigo
13
Patrones de creacin
Modelo-Vista-Controlador
objetos de control,
eventos
Controlador
Vista
Modelo
Patrones de creacin
visualizacin
en pantalla
aplicacin
14
Problema y contexto
Referencia al patrn
Incrementa el vocabulario de diseo
Cundo aplicar el patrn
Solucin
Patrones relacionados
Patrones de creacin
15
Patrones de creacin
Patrones estructurales
Patrones de comportamiento
Patrones de creacin
16
Patrones de creacin
17
Patrones de creacin
18
Patrones de creacin
Patrones de creacin
new
:X
creaX()
XY
XZ
Selecciona la
implementacin de X
Patrones de creacin
20
Patrones de creacin
Patrones de creacin
21
Patrones de creacin
Se da independencia de
qu se crea
quin lo crea
cmo se crea
cundo se crea
Patrones de creacin
22
Patrones de creacin
Builder
Factora para construir objetos complejos de forma incremental
Prototype
Factora para clonar nuevos ejemplares copiando de un prototipo
Singleton
Object Pool
Factora que asegura que slo hay un miembro (singleton) o un conjunto determinado
(object pool) de una clase, y proporciona un punto global de acceso a l
Patrones de creacin
23
Mtodo Factora
Propsito:
Permite que una clase difiera la instanciacin a las subclases (son
stas las que deciden qu clase instanciar)
Otras denominaciones:
Factory Method
Virtual Constructor
Motivacin
Patrones de creacin
24
Mtodo Factora
Documento
abrir()
cerrar()
salvar()
restaurar()
Documento
Grafico
Documento
Textual
Aplicacion
crearDocumento()
nuevoDocumento()
abrirDocumento()
Documento doc = crearDocumento();
documentos.anadirDocumento(doc);
doc.abrir();
MiProcesadorTextos
crearDocumento()
return new DocumentoTextual();
Patrones de creacin
25
Mtodo Factora
Aplicacin
Patrones de creacin
26
Mtodo Factora
Interfaz de los
objetos que crea el
mtodo factora
Patrones de creacin
27
Mtodo Factora
Consecuencias
Patrones de creacin
28
Mtodo Factora
Implementacin
Patrones de creacin
29
Factora Abstracta
Propsito:
Proporcionar una interfaz para crear familias de objetos
relaciones o dependientes, sin especificar sus clases
concretas
Otras denominaciones:
Abstract Factory
Kit
Motivacin
Patrones de creacin
30
JAVA L&F
Motif L&F
Windows L&F
Patrones de creacin
31
Patrones de creacin
32
Factora Abstracta
Factora Abstracta
Aplicacin
33
Patrones de creacin
Factora Abstracta
FactoriaConcreta1
CreaProductoA()
CreaProductoB()
ProductoA1
FactoriaConcreta2
CreaProductoA()
CreaProductoB()
ProductoAbstractoB
ProductoB1
ProductoA2
Patrones de creacin
ProductoB2
34
Factora Abstracta
Consecuencias
Patrones de creacin
35
Factora Abstracta
Implementacin
Creacin de productos:
Mtodo factora por cada producto:
La factora abstracta slo define una interfaz para crear productos, y es la
subclase factora concreta la que los crea. sta especificar sus productos
redefiniendo el mtodo factora para cada uno.
Prototipo para cada factora concreta
Se crea la factora concreta inicializada con un objeto prototipo de cada
producto. Los nuevos se crean haciendo clones del prototipo
Patrones de creacin
36
Aplicacin en Swing
Patrones de creacin
37
Builder
Propsito:
Permite a un cliente construir un objeto complejo
especificando slo su tipo y contenido, ocultndole todos
los detalles de la construccin del objeto
Patrones de creacin
38
Builder
Motivacin
Patrones de creacin
39
Patrones de creacin
40
Builder
Builder
Aplicacin
41
Patrones de creacin
Builder
Esquema y participantes
Construye un
objeto usando la
interfaz de Builder
Construye y junta
las partes del
producto
Patrones de creacin
Representa el
objeto complejo
que se est
construyendo
42
Builder
Colaboraciones
Patrones de creacin
43
Builder
Consecuencias
Patrones de creacin
44
Builder
Patrones de creacin
45
Singleton
Propsito:
Asegurar que una clase slo tiene un ejemplar, y
proporcionar un punto de acceso global a ste
Motivacin
Patrones de creacin
46
Singleton
Aplicacin
47
Patrones de creacin
Singleton
Singleton
static ejemplarUnico
datosSingleton
static ejemplar()
operacion()
getDatosSingleton()
Patrones de creacin
return ejemplarUnico
48
Singleton
Consecuencias
Patrones de creacin
49
Singleton
Implementacin
Patrones de creacin
50
Singleton
Implementacin
Utilizacin:
Singleton instance = Singleton.getEjemplar();
//
instance.metodo();
Patrones de creacin
51
Discusin
Patrones de creacin
52
Patrones estructurales
Patrones estructurales
Patrones de creacin
54
Patrones estructurales
Object Adapter
Bridge
Composite
Decorator
Facade
Flyweight
Proxy
Patrones de creacin
55
Adaptador
Propsito:
Otras denominaciones:
Motivacin
Patrones de creacin
56
Adaptador
Patrones de creacin
57
Adaptador
Aplicacin
Patrones de creacin
58
Adaptador
Define una
interfaz existente
que necesita
adaptacin
Define la interfaz
especfica al
dominio que
utiliza el cliente
Adapta la
interfaz de
Adaptee a la
interfaz Target
59
Patrones de creacin
Adaptador
Define una
interfaz existente
que necesita
adaptacin
Define la interfaz
especfica al
dominio que
utiliza el cliente
Adapta la
interfaz de
Adaptee a la
interfaz Target
Juan Pavn Mestras
Facultad de Informtica UCM, 2004
Patrones de creacin
60
Adaptador
Consecuencias
Un adaptador de clase:
Adapta una clase Adaptada a una interfaz Objetivo reutilizando los
mtodos de la clase Adaptada. Por tanto, no funcionar cuando se quieran
adaptar la clase adaptada y todas sus subclases
La clase adaptadora puede redefinir algunos de los mtodos de la clase
adaptada
Slo se introduce un objeto, y no hace falta delegar en otro adaptado
Un adaptador de objeto:
Permite trabajar un slo adaptador con muchos adaptados (esto es, de la
clase adaptada y sus subclases)
Se puede aadir funcionalidad a todos los adaptados de una vez
Es ms difcil si se necesita redefinir el comportamiento del adaptado
Patrones de creacin
61
Bridge
Propsito:
Desacopla una abstraccin de su implementacin de manera que
las dos puedan evolucionar independientemente
Otras denominaciones:
Handle/Body
Motivacin
Patrones de creacin
62
Bridge
Patrones de creacin
63
Bridge
Aplicacin
Patrones de creacin
64
Bridge
Define la interfaz
de las clases de
implementacin,
que no se tiene
que corresponder
con la de
Abstraction
Define la interfaz
de abstraccin y
mantiene una
referencia al objeto
Implementor
Extiende la interfaz
Abstraction
Patrones de creacin
65
Bridge
Consecuencias
Se mejora la extensibilidad
Las jerarquas de abstraccin y de implementacin pueden
evolucionar independientemente
Patrones de creacin
66
Bridge
Patrones de creacin
67
Proxy
Propsito:
Otras denominaciones:
Motivacin
Patrones de creacin
68
Proxy
Patrones de creacin
69
Proxy
Patrones de creacin
70
Proxy
Define la intefaz
comn al Sujeto
Real y al Proxy
Define el objeto
real que
representa el
proxy
Mantiene una referencia al sujeto
real y proporciona la misma interfaz
Controla el acceso al sujeto real y
puede ser responsable de crearlo y
destruirlo
Juan Pavn Mestras
Facultad de Informtica UCM, 2004
Patrones de creacin
71
Proxy
Consecuencias
Patrones de creacin
72
Proxy
Patrones de creacin
73
Proxy
Patrones de creacin
74
Composite
Propsito:
Motivacin
Patrones de creacin
75
Patrones de creacin
76
Composite
Composite
Aplicacin
77
Patrones de creacin
Composite
Manipula los
objetos de la
composicin a
travs de la interfaz
Component
Patrones de creacin
78
Composite
Consecuencias
Patrones de creacin
79
Composite
Patrones de creacin
80
Decorador
Propsito:
Otras denominaciones:
Motivacin
Patrones de creacin
81
Patrones de creacin
82
Decorador
Decorador
Aplicacin
83
Patrones de creacin
Decorador
Define la interfaz
de los objetos a los
que se les pueden
asignar nuevas
responsabilidades
Aade responsabilidades al
componente
Patrones de creacin
84
Decorador
Consecuencias
Patrones de creacin
85
Decorador
Conformidad de interfaces
Patrones de creacin
86
Fachada
Propsito:
Otras denominaciones:
Motivacin
Patrones de creacin
87
Fachada
Patrones de creacin
88
Fachada
Aplicacin
89
Patrones de creacin
Fachada
Implementan la
funcionalidad
del subsistema.
No tienen
conocimiento de
la fachada
Patrones de creacin
90
Fachada
Consecuencias
Patrones de creacin
91
Fachada
Patrones de creacin
92
Discusin
Adaptador y Bridge
Ambos envan peticiones a un objeto cuya interfaz es distinta
El adaptador trata de resolver incompatibilidades entre interfaces
existentes, bridge trata de proporcionar una interfaz estable a los
clientes, independiente de cmo evolucione la implementacin
Por tanto el Adaptador suele aparecer cuando ya hay clases
desarrolladas, pero el Bridge es algo que el diseador avanza al
principio del ciclo de vida del sistema
Patrones de creacin
93
Discusin
Composite y Decorator
Ambos se basan en la composicin recursiva para organizar un
conjunto de objetos ilimitado
El Decorador pretende facilitar el aadir responsabilidades a los
objetos sin hacer subclases. Composite trata de que mltiples
objetos se puedan tratar de manera uniforme, como uno (el
nfasis est en la representacin y no en el embellecimiento)
Los propsitos son complementarios y por tanto se suelen usar
los dos patrones conjuntamente
Proxy
Similar estructura que Decorator
Especializacin de Bridge
Patrones de creacin
94
Patrones de comportamiento
Patrones de comportamiento
Mediante herencia
Mtodo Template: definicin abstracta de un algoritmo
Intrprete: representa una gramtica como una jerarqua de
clases
Encapsulado de comportamientos
Patrones de creacin
96
Patrones de comportamiento
Chain of responsability
Command
Mediator
Iterator
Interpreter
Memento
Patrones de creacin
97
Patrones de comportamiento
Observer
State
Template method
Strategy
Visitor
Patrones de creacin
98
Mtodo Template
Propsito:
Aplicacin
Patrones de creacin
99
Mtodo Template
Patrones de creacin
100
Mtodo Template
Consecuencias
Patrones de creacin
101
Estrategia
Propsito:
Otras denominaciones:
Motivacin
Patrones de creacin
102
Estrategia
Aplicacin
Patrones de creacin
103
Estrategia
Patrones de creacin
104
Estrategia
Consecuencias
Patrones de creacin
105
Discusin
Patrones de creacin
106
Bibliografa
Gamma E., Helm R., Johnson R., Vlissides J., ; Design Patterns.
Elements of Reusable Object-Oriented Software; AddisonWesley, 1995. Traduccin al castellano (2002): Diseo de
patrones. Pearson Educacin
James W. Cooper, The Design Patterns Java Companion. Addison
Wesley, 1998
Steven J. Metsker, Design Patterns Java Workbook, Addison
Wesley, 2002
Patrones de creacin
107