Professional Documents
Culture Documents
micael.gallego@gmail.com
Qu es un patrn de diseo?
Qu es un patrn de diseo?
Catlogos de patrones
Estn documentados los pros y los contras de cada patrn.
Se conocen las implicaciones de su aplicacin
Proporcionan un vocabulario comn entre desarrolladores
Abstraccin y Reutilizacin
Los
Abstraccin y Reutilizacin
Reutilizacin
Abstraccin y Reutilizacin
Abstraccin
y Reutilizacin en Programacin
Orientada a Objetos
Abstraccin y Reutilizacin
Tipo de Reutilizacin Se puede aplicar
de nuevo?
Qu se abstrae?
Genericidad
Fragmento de
cdigo
Muy Pobre
Nada
Muy pobre
Estructura de datos
Buena
Tipos de datos
Moderada-Buena
Funcional
Buena
Mtodo
Moderada-Buena
Tipos Genricos
Buena
Buena
Algoritmo
Buena
Frmula
Buena
Clases (Interfaz,
Polimorfismo, Clase
abstracta)
Buena
Datos + Mtodos
Buena
API (Librera)
Buena
Clases tiles
Buena-Muy Buena
Componente
Buena
Grupo de Clases
Buena-Muy Buena
Patrn de Diseo
Excelente
Solucin a un
problema
Muy Buena
Tipos de Patrones
Existen
diseo
Patrones de Creacin
Patrones de Comportamiento
Patrones Estructurales
Patrones de sistema
Tipos de Patrones
Patrones
Patrones
de Creacin
de Comportamiento
Tipos de Patrones
Patrones
Patrones
Estructurales
de sistema
Cmo es un patrn?
Nombre
Tambin conocido como Otros nombres usuales
Propiedades
Tipo - Creacin, Comportamiento, Estructural o De sistema
Nivel - Clase nica, Componente (Grupo de clases),
Arquitectnico (Coordina sistemas y subsistemas)
Propsito - Para qu sirve?
Presentacin Problema que soluciona (con ejemplos)
Aplicabilidad Cuando y por qu debera usarse
Cmo es un patrn?
Patrones de Creacin
Facilitan
Patrones de Creacin
Singleton
Factory
Builder
(nico)
(Constructor)
Patrones de Creacin
Abstract
Prototype
(Prototipo)
Hay
muchos mas
Patrones de Creacin
Singleton (nico)
Propiedades
Propsito
Patrones de Creacin
Singleton (nico)
Introduccin
Patrones de Creacin
Singleton (nico)
Introduccin
Patrones de Creacin
Singleton (nico)
Aplicabilidad
Descripcin
Patrones de Creacin
Singleton (nico)
Implementacin
Patrones de Creacin
Singleton (nico)
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class HistoryList {
private static HistoryList instance = new HistoryList();
private List history = new ArrayList();
private HistoryList() {
}
public static HistoryList getInstance() {
return instance;
}
public void addCommand(String command) {
history.add(command);
}
public Object undoCommand() {
return history.remove(history.size() - 1);
}
}
...
Patrones de Creacin
Singleton (nico)
Ventajas
Inconvenientes
Patrones de Creacin
Singleton (nico)
Variaciones
del patrn
Patrones de Creacin
Singleton (nico)
Patrones
relacionados
Patrones de Creacin
Singleton (nico)
Clase java.awt.Toolkit
Variacin del patrn porque Toolkit es abstracta y la
instancia devuelta es de una clase hija
El mtodo es getDefaultToolkit()
Clase java.lang.Runtime
El mtodo es getRuntime()
Clase java.text.DateFormat
Variacin del patrn porque DateFormat es abstracta
Tiene varios mtodos con varias instancias
getDateInstance(), getDateInstance(int
style), getDateTimeInstance(),
Ejercicio 1
Aplica
Patrones de Creacin
Prototype (Prototipo)
Propiedades
Propsito
Patrones de Creacin
Prototype (Prototipo)
Introduccin
Patrones de Creacin
Prototype (Prototipo)
Aplicabilidad
Descripcin
Patrones de Creacin
Prototype (Prototipo)
Implementacin
Ventajas
e Inconvenientes
Patrones de Creacin
Prototype (Prototipo)
Variaciones
Patrones
del patrn
relacionados
Patrones de Creacin
Prototype (Prototipo)
Ejemplo
Ejercicio 2
Aplica
Patrones de Creacin
conocido como
Propiedades
Propsito
Patrones de Creacin
Patrones de Creacin
Patrones de Creacin
Patrones de Creacin
(ver cdigo)
Patrones de Creacin
Patrones de Creacin
Patrones de Creacin
Patrones de Creacin
e Inconvenientes
Patrones de Creacin
Patrones
del Patrn
relacionados
Ejercicio 3
Incorpora
Patrones de Comportamiento
Estn
Patrones de Comportamiento
Command (Comando)
Interpreter (Intrprete)
Patrones de Comportamiento
Iterator
(Iterador)
Mediator
(Mediador)
Patrones de Comportamiento
Observer (Observador)
State (Estado)
Strategy (Estrategia)
Patrones de Comportamiento
Visitor
(Visitante)
Patrones de Comportamiento
Command (Comando)
Propiedades
Tipo: De comportamiento
Nivel: Objeto
Propsito
Patrones de Comportamiento
Command (Comando)
Introduccin
Patrones de Comportamiento
Command (Comando)
Aplicabilidad
Patrones de Comportamiento
Command (Comando)
Descripcin
Patrones de Comportamiento
Command (Comando)
Implementacin
Patrones de Comportamiento
Command (Comando)
...
Patrones de Comportamiento
Command (Comando)
Ventajas
Patrones de Comportamiento
Command (Comando)
Variaciones
Patrones de Comportamiento
Command (Comando)
Patrones
relacionados
Patrones de Comportamiento
Command (Comando)
Ejemplo
(ver cdigo)
Ejercicio 4
Incorpora
el patrn Command en el
programa de gestin de estructuras de datos
en el que se permita la accin de deshacer
Patrones de Comportamiento
Iterator (Iterador)
Tambin
conocido como
Cursor
Propiedades
del patrn
Tipo: De comportamiento
Nivel: Componente
Propsito
Patrones de Comportamiento
Iterator (Iterador)
Introduccin
Patrones de Comportamiento
Iterator (Iterador)
...
Patrones de Comportamiento
Iterator (Iterador)
Aplicabilidad
Patrones de Comportamiento
Iterator (Iterador)
Descripcin
Patrones de Comportamiento
Iterator (Iterador)
Implementacin
Patrones de Comportamiento
Iterator (Iterador)
Ventajas
Inconvenientes
Patrones de Comportamiento
Iterator (Iterador)
Ejemplo
(Ver cdigo)
Patrones de Comportamiento
Iterator (Iterador)
Variaciones
del Patrn
Patrones de Comportamiento
Iterator (Iterador)
Patrones
relacionados
Ejercicio 5
Implementa
Patrones de Comportamiento
Observer (Observador)
Tambin
conocido como
Publisher-Subscriptor (Editor-Suscriptor)
Propiedades
del patrn
Tipo: De comportamiento
Nivel: Componente
Propsito
Patrones de Comportamiento
Observer (Observador)
Introduccin
Patrones de Comportamiento
Observer (Observador)
...
Patrones de Comportamiento
Observer (Observador)
Aplicabilidad
Patrones de Comportamiento
Observer (Observador)
Descripcin
Patrones de Comportamiento
Observer (Observador)
...
Patrones de Comportamiento
Observer (Observador)
Implementacin
Patrones de Comportamiento
Observer (Observador)
...
Observable
Patrones de Comportamiento
Observer (Observador)
...
Observer
ConcreteObserver
Event
Patrones de Comportamiento
Observer (Observador)
Ventajas
e Inconvenientes
Patrones de Comportamiento
Observer (Observador)
Ventajas
e Inconvenientes...
Patrones de Comportamiento
Observer (Observador)
Variaciones
del patrn
Patrones de Comportamiento
Observer (Observador)
Patrones
relacionados
Proxy
RemoteProxy
Patrones de Comportamiento
Observer (Observador)
Ejemplo
(ver cdigo)
Ejercicio 6
Independiza
Patrones Estructurales
Describen
Patrones Estructurales
Adapter
Bridge
(Adaptador)
(Puente)
Patrones Estructurales
Composite
Decorator
(Compuesto)
(Decorador)
Patrones Estructurales
Facade (Fachada)
Proxy (Representante)
Patrones Estructurales
Composite (Compuesto)
Propiedades
del Patrn
Tipo: Estructural
Nivel: Componente
Propsito
Patrones Estructurales
Composite (Compuesto)
Introduccin
Patrones Estructurales
Composite (Compuesto)
Introduccin...
Patrones Estructurales
Composite (Compuesto)
Introduccin...
Patrones Estructurales
Composite (Compuesto)
Introduccin...
Patrones Estructurales
Composite (Compuesto)
Ejemplo
(ver cdigo)
Patrones Estructurales
Composite (Compuesto)
Aplicabilidad
Patrones Estructurales
Composite (Compuesto)
Descripcin
Component
Composite
Node
Patrones Estructurales
Composite (Compuesto)
Implementacin
Patrones Estructurales
Composite (Compuesto)
Ventajas
e Inconvenientes
Patrones Estructurales
Composite (Compuesto)
Variaciones
del patrn
Patrones Estructurales
Composite (Compuesto)
Patrones
relacionados
Chain of Responsability
Flyweight
Iterator
Visitor
Ejercicio 7
Crea
5 + (5 * (2 9))
8 / ( (14 * 34) + (22 + 4) )