Documentos de Académico
Documentos de Profesional
Documentos de Cultura
M4
Patrones de Diseño
Contenido
¿Qué es un Patrón?
Clasificación
2
DSI - Unidad 2 – 3K3 2021 – Patrones de Diseño
● “.. cada patrón describe un problema que ocurre una y otra vez en
nuestro entorno, así como la solución a ese problema, de tal modo que
se puede aplicar esta solución un millón de veces, sin hacer lo mismo dos
veces ..” (Cristopher Alexander)
Exp 3
DSI - Unidad 2 – 3K3 2021 – Patrones de Diseño
Un patrón de diseño:
● Nomina, abstrae e identifica los aspectos clave de una
estructura de diseño común, lo que los hace útiles para crear un
diseño OO reutilizable.
Plantilla de definición:
- Propósito
● Nombre
- Sinónimos
- Motivación
● Problema
- Aplicabilidad
- Estructura
● Solución
- Participantes
- Colaboraciones
- Implementación
● Consecuencias - Ventajas
Exp - Inconvenientes 6
DSI - Unidad 2 – 3K3 2021 – Patrones de Diseño
● Ejemplo de Código
● Usos conocidos
● Patrones relacionados
Exp 7
DSI - Unidad 2 – 3K3 2021 – Patrones de Diseño
● Favorecen la reutilización
Exp 8
DSI - Unidad 2 – 3K3 2021 – Patrones de Diseño
○ Clases del análisis vs. Clases del diseño: Clases del diseño no siempre
tienen contrapartida en el dominio.
Exp 10
DSI - Unidad 2 – 3K3 2021 – Patrones de Diseño
Exp Anexo I 12
DSI - Unidad 2 – 3K3 2021 – Patrones de Diseño
○ Los patrones de diseño nos dan pautas para definir las clases
participantes
Exp 14
DSI - Unidad 2 – 3K3 2021 – Patrones de Diseño
Servici oA
proveerServicio()
<<Interface>>
usa
Cliente IntServicios
Servic ioB
proveerServicio()
proveerServicio()
Exp 16
DSI - Unidad 2 – 3K3 2021 – Patrones de Diseño
○ Los clientes no tienen que conocer los tipos específicos de objetos que usan,
basta con que éstos se adhieran a la interfaz que esperan los clientes.
Exp 18
DSI - Unidad 2 – 3K3 2021 – Patrones de Diseño
• Definición dinámica
• Uso más complicado
• Es posible cambiar la implementación en
COMPOSICION
tiempo de ejecución
• Requiere que se satisfaga cierta interfaz
• No rompe el encapsulamiento
Exp 19
DSI - Unidad 2 – 3K3 2021 – Patrones de Diseño
m1() m1()
B
m1() {oa.m 1()}
20
DSI - Unidad 2 – 3K3 2021 – Patrones de Diseño
Reutilizar mediante la herencia hace más fácil construir nuevos componentes que
puedan ser combinados con los antiguos.
Herencia y composición trabajan juntas
pero
“Se suele abusar de la herencia. Los diseños suelen ser más reutilizables si dependen
más de la composición”.
Exp 21
DSI - Unidad 2 – 3K3 2021 – Patrones de Diseño
Exp 22
DSI - Unidad 2 – 3K3 2021 – Patrones de Diseño
R e c ta n g u lo
V e n ta n a u sa a n ch o
• Ejemplo: a l to
a re a ()
a re a ()
r e tu r n r e c ta n g u lo .a r e a ( ) r e tu r n a n c h o * a l to
23
DSI - Unidad 2 – 3K3 2021 – Patrones de Diseño
p r o ve e r S e r vi c i o ( )
● Estructura: usa
< < In te r fa c e > >
C l ie n te In t S e rv ic io s
S e r vic io B
p r o ve e r S e r vi c i o ( )
p r o ve e r S e r vi c i o ( )
24
DSI - Unidad 2 – 3K3 2021 – Patrones de Diseño
Delegación + Interfaz
25
DSI - Unidad 2 – 3K3 2021 – Patrones de Diseño
26
DSI - Unidad 2 – 3K3 2021 – Patrones de Diseño
Exp 27
DSI - Unidad 2 – 3K3 2021 – Patrones de Diseño
Decorator, Visitor
Exp 28
DSI - Unidad 2 – 3K3 2021 – Patrones de Diseño
29
DSI - Unidad 2 – 3K3 2021 – Patrones de Diseño
Criterios:
Propósito: Refleja qué hace un patrón.
- Creación: Tienen que ver con el proceso de creación de objetos
- Estructural: Tratan con la composición de clases u objetos.
- Comportamiento: Caracterizan el modo en que las clases y los objetos
interactúan y se reparten la responsabilidad.
Patrones de Creación
● Abstraen el proceso de creación de objetos.
● Ayudan a crear sistemas independientes de cómo se crean, se
componen y se representan sus objetos.
Clasificación 33
DSI - Unidad 2 – 3K3 2021 – Patrones de Diseño
Patrones de Creación
● Se encapsula:
Clasificación 34
DSI - Unidad 2 – 3K3 2021 – Patrones de Diseño
Patrones de Creación
● Abstract Factory (Fábrica abstracta):
Patrones de Creación
● Factory Method (Método de fabricación):
● Singleton (Único):
○ Permite tener una única instancia de esta clase en el sistema, a la vez que
permite que todas las clases tengan acceso a esa instancia.
Clasificación 36
DSI - Unidad 2 – 3K3 2021 – Patrones de Diseño
Patrones estructurales
● Están relacionados a cómo clases y objetos se combinan para
formar estructuras más complejas.
● Describen formas efectivas de particionar y combinar los
elementos de una aplicación.
● Patrones de clase
○ Usan herencia
● Patrones de objeto
○ Describen formas de combinar objetos para obtener nueva
funcionalidad
○ Posibilidad de cambiar la composición en tiempo de ejecución
flexibilidad de la composición
Clasificación 37
DSI - Unidad 2 – 3K3 2021 – Patrones de Diseño
Patrones estructurales
● Adapter (Adaptador)
○ Sirve como un intermediario entre dos clases, convirtiendo las interfaces de
una clase en la que espera otra clase cliente.
● Bridge (Puente)
○ Desacopla una abstracción de su implementación, de modo que ambas
puedan variar de forma independiente.
● Composite (Compuesto):
○ Desarrolla una forma flexible de crear jerarquías en estructura de árbol de
una complejidad arbitraria, permitiendo a la vez que todos los elementos de
la estructura funcionen con una interfaz uniforme.
38
DSI - Unidad 2 – 3K3 2021 – Patrones de Diseño
Patrones estructurales
● Decorator (Decorador)
○ Proporciona una forma flexible de introducir o eliminar funcionalidad de un
componente sin modificar su apariencia externa.
● Facade (Fachada):
○ Proporciona una interfaz simplificada para un grupo de subsistemas o un
sistema complejo.
● Flyweight (Peso Ligero)
○ Reduce el número de objetos detallados de muy bajo nivel de un sistema
compartiendo objetos.
● Proxy (Apoderado)
○ Proporciona un representante de otro objeto, por razones como acceso,
velocidad, seguridad.
Clasificación 39
DSI - Unidad 2 – 3K3 2021 – Patrones de Diseño
Patrones de Comportamiento
● Están relacionados con algoritmos y asignación de
responsabilidades a las clases.
● Enfatizan la colaboración entre objetos.
● Caracterizan un flujo de control más o menos complejo que
será transparente al que utilice el patrón.
○ Patrones de comportamiento basados en clases: usan la herencia para
distribuir el comportamiento.
○ Patrones de comportamiento basados en objeto: usan la composición
de objetos en vez de la herencia.
Clasificación 40
DSI - Unidad 2 – 3K3 2021 – Patrones de Diseño
Patrones de Comportamiento
● Chain of Responsability (Cadena de Responsabilidad)
○ Establece una cadena para que una petición pueda ser respondida por
el receptor o pasada a través de la cadena hasta que sea respondida
por algún objeto.
● Command (Comando)
○ Encapsula un comando en un objeto de modo que pueda ser
almacenado, pasado a métodos y devuelto igual que cualquier otro
objeto.
● Interpreter (Intérprete)
○ Dado un lenguaje define una representación de su gramática junto con
su intérprete que usa dicha representación para interpretar sentencias
del lenguaje. El patrón “Intérprete” usa una clase para representar cada
regla de la gramática.
41
DSI - Unidad 2 – 3K3 2021 – Patrones de Diseño
Patrones de Comportamiento
● Iterator (iterador)
○ Proporciona una forma coherente de acceder secuencialmente a los
elementos de una colección sin exponer su representación externa.
● Mediator (mediador)
○ Define un objeto que encapsula cómo interactúan una serie de
objetos.
● Memento (recuerdo)
○ Guarda una “imagen” del estado de un objeto, de forma que pueda
ser devuelto a su estado original sin revelar su contenido.
42
DSI - Unidad 2 – 3K3 2021 – Patrones de Diseño
Patrones de Comportamiento
● Observer (observador)
○ Define una dependencia de uno-a-muchos objetos, para que cuando
un objeto cambie de estado se notifique y se actualicen
automáticamente todos los objetos que dependen de él.
● State (Estado):
○ Permite modificar fácilmente el comportamiento de un objeto,
dependiente de su estado actual.
● Strategy (Estrategia):
○ Define un grupo de clases que representa un conjunto de posibles
comportamientos. Estos comportamientos pueden ser fácilmente
intercambiados en una aplicación, modificando la funcionalidad en cualquier
instante.
43
DSI - Unidad 2 – 3K3 2021 – Patrones de Diseño
Patrones de Comportamiento
● Visitor (Visitante)
○ Representa una operación sobre los elementos de una estructura de objetos.
Permite definir una nueva operación sin cambiar la clase de los elementos
sobre los que opera.
● Template Method (Método plantilla):
○ Proporciona un método que permite que las subclases redefinan partes del
método sin rescribirlo.
Clasificación 44
DSI - Unidad 2 – 3K3 2021 – Patrones de Diseño
189
DSI - Unidad 2 – 3K3 2021 – Patrones de Diseño
Bibliografía
● Patrones de Diseño - Gamma, Helm, Johnson, Vlissides (Editorial
Addison-Wesley - Año 2003).
● Patrones de Diseño aplicados a Java (Stelting, Maassen)
● UML y Patrones – Larman, Craig (Editorial Prentice Hall – 2ª edic.- Año
2003)
● Material Jesús García Molina, Departamento de Informática y
Sistemas, Universidad de Murcia, http://dis.um.es/~jmolina
● Material de la Universidad de Castilla – La Mancha
● Material de la Univ. de Chile preparado por el profesor Luis Guerrero
para el curso “Diseño Orientado a Objetos”, utilizado en la Maestría
de Ingeniería de Software de la UNLP dictado por la UBP.
191
DSI - Unidad 2 – 3K3 2021 – Patrones de Diseño