Professional Documents
Culture Documents
Patrones de diseo
E.A.P. Computacin Cientfica
Integrantes:
Lucero Polo
Cristian Quezada
ndice
Patrones de diseo
Bibliografa
Patrones de diseo
Creacional
Estructural
De
Comportamiento
Editor
Linkador
Depurador
Compilador
Clases del
Compilar()
subsistema de
compilacin
Leyenda:
o AnaSin: Anlisis Sintctico
o AnaLex: Anlisis Lxico
o ASem: Anlisis Semntico
o TabSim: Tabla de Smbolos
AnaSin
ASem
AnaLex
TabSim
Token
Fachada
subsistema
B
ndice
Introduccin
Patrones de diseo de uso comn
Bibliografa
Clasificacin
Creacional
Estructural
De
Comportamiento
La Fbrica Simple
OJO! Es una fbrica abstracta con un solo
producto. NO es un PD.
La Fbrica Simple sirve para encapsular el cdigo
de creacin de objetos en una clase.
FormaPreguntarFactory
llama
...
IFormaPreguntar p;
p = factory.create();
...
create(): IFormaPreguntar
crea
<<interface>>
IFormaPreguntar
IFormaPreguntar p = null;
if ()
p = new
PreguntaAzar();
else
p = new PreguntaTodas();
return p;
PreguntaAzar
PreguntaTodas
Client
AbstractProductA
AbstractFactory
createProductA()
ProductA2
ProductA1
createProductB()
ConcreteFactory1
ConcreteFactory2
createProductB()
createProductB()
createProductA()
createProductA()
AbstractProductB
ProductB2
ProductB1
El Patrn Singleton
El PD Singleton garantiza que una clase slo tenga una
instancia y proporciona un punto de acceso global a
ella.
PrinterManager
El truco es poner el
constructor privado. As
se evita que otras
clases puedan crear
instancias de
PrinterManager
- instance: PrinterManager =
null
- PrinterManager()
+ getInstance(): PrinterManager
+ print(Document d)
...
PrinterManager p = PrinterManager.getInstance();
p.print(d);
El nico objeto de tipo
PrinterManager est en el
atributo instance de la clase
PrinterManager
PrinterManager es un
singleton que maneja la
cola de impresin para una
impresora
if (instance == null)
instance = new PrinterManager();
return instance
PrinterManager
(Clase)
instance
(objeto de tipo
PrinterManager)
Clasificacin
Creacional
Estructural
De
Comportamiento
El Patrn Adaptador
El PD Adaptador convierte la interfaz de una clase en
otra interfaz que espera el cliente. El adaptador permite
que clases con interfaces incompatibles puedan funcionar
<<interface>>
juntas.
Client
ILogin
login(name,pass): Boolean
HotmailLogin
authenticate(name, pass): Boolean
adaptee
HotmailLoginAdapter
login(name, pass):
Boolean
El Patrn Decorador
El PD Decorador aade responsabilidades adicionales a
un objeto dinmicamente. Los decoradores proporcionan
una alternativa flexible a hacer subclases para extender
la funcionalidad.
Un objeto se puede
decorar con varios
decoradores
Cipher
Input
Stream
read()
Aade su propio
comportamiento antes o
despus de delegar en el
objeto que decora
Inflater
Input
Stream
InputStream
read()
FileInputStream
FileInputStream
read()
Decorator
read()
read()
read()
CipherInputStream
read()
Los decoradores tienen el
mismo supertipo que los
objetos que decoran
InflaterInputStream
read()
El Patrn Fachada
El PD Fachada proporciona una interfaz unificada a un
conjunto de interfaces de un subsistema. La fachada
define una interfaz de alto nivel que hace al subsistema
ms fcil de usar.
Linkador
Editor
Depurador
Compilador
Clases del
subsistema de
compilacin
Compilar()
AnaSin
ASem
AnaLex
TabSim
Token
0 *
#flyweight
s
0 *
El Patrn Proxy
El PD Proxy proporciona un sustituto a otro objeto para
controlar su acceso.
Un objeto
que muestra
una imagen
<<interface>>
Image
paintImage(Graph ics g)
ImageFile
paintImage(Graphics g)
ImageProxy
realImage
image.paintImage(g)
Un proxy de la
imagen
(ImageProxy)
realImage.paintImage(g)
Una imagen
(ImageFile)
paintImage(Graphics g)
Clasificacin
Creacional
Estructural
De
Comportamiento
El Patrn Estrategia
El PD Estrategia define una familia de algoritmos, los
encapsula y los hace intercambiables. Permite que el
algoritmo vare independientemente del cliente.
PreguntaAzar
CasillaCentral
pregunta(): Boolean
pregunta(): Boolean
formaPreguntar
<<interface>>
PreguntaElegida
preguntar(): Boolean
IFormaPreguntar
pregunta(): Boolean
PreguntaToda
s
preguntar(): Boolean
Estrategias
(Formas de preguntar)
Bebida
hervir();
preparar()
hervir()
ponerEnVaso()
echar()
condimentar()
Mtodos
concretos
(finales)
Mtodo plantilla
echar();
ponerEnVaso();
condimentar();
Mtodo primitivo
(abstracto)
Caf
echar()
T
echar()
condimentar()
Mtodo gancho
(se da una implementacin por
defecto que se puede refinar
opcionalmente)
El Patrn Observador
El PD Observador define una dependencia uno-a-varios
entre objetos de manera que cuando un objeto cambia
de estado, se notifica a todas sus dependencias y se
actualizan automticamente.
<<interface>>
El sujeto
observado avisa a
los observadores
cuando se ha
producido algn
cambio
2%
C, 7
3
1
Observers
WeatherData
(Subject)
13
C,
ExternalDisplay
(Observer)
<<interface>>
Subject
register(Observer o)
remove(Observer
o)
notifyObservers()
observers
Observer
update(temp: float, hum: float)
StatisticsDisplay
72%
StatisticsDisplay
(Observer)
CurrentConditio
nsDisplay
(Observer)
Los observadores se
registran utilizando el
mtodo register
subject
update(temp, hum)
display()
ExternalDisplay
update(temp, hum)
display()
WeatherData
register(Observer o)
remove(Observer o)
notifyObservers()
getTemperature(): float
getHumidity(): float
measurementsChanged()
CurrentConditionsDisplay
subject
update(temp, hum)
display()
ndice
Introduccin
Patrones de diseo de uso comn
Bibliografa
Bibliografia
Basica (de referencia):
Patrones de diseo en Java, Laurent Debrauwer
De apoyo:
Patrones de diseo
http://www.oodesign.com/