Está en la página 1de 25

DSI – 3K3 Año 2021

M4

Patrones de Diseño

Diseño de Sistemas – Curso: 3K3


Unidad 2 Docentes: Ing. Marcela F. Cattaneo
Ing. Germán Vélez
Gonzalo Martinez

Contenido
¿Qué es un Patrón?

¿Qué es un Patrón de Diseño?

Elementos esenciales de un patrón de diseño


(plantilla de definición)

Problemas de diseño que resuelven

Cómo seleccionar y usar el patrón a aplicar

Clasificación

2
DSI - Unidad 2 – 3K3 2021 – Patrones de Diseño

Ing. Marcela F. Cattaneo


Ing. Germán Vélez 1
Diapositiva 1

M4 VER OBSERVACION EN EL STATE – STRATEGY – BUILDER –


OBSERVER – TEMPLATE METHOD - COMPOSITE
Marcela; 3/9/2021
DSI – 3K3 Año 2021

Introducción a los 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)

● Los patrones de diseño son descripciones de clases y objetos


relacionados que están particularizados para resolver un problema
de diseño general en un determinado contexto.
(Gamma, Helm, Johnson,Vlissides GoF)

Exp 3
DSI - Unidad 2 – 3K3 2021 – Patrones de Diseño

Introducción a los 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.

● Identifica las clases e instancias participantes, sus roles y


colaboraciones y la distribución de responsabilidades.

● Aborda un problema concreto, describiendo cuándo aplicar


dicho patrón, consecuencias, ventajas e inconvenientes de su
uso.
Exp 4
DSI - Unidad 2 – 3K3 2021 – Patrones de Diseño

Ing. Marcela F. Cattaneo


Ing. Germán Vélez 2
DSI – 3K3 Año 2021

Introducción a los patrones de diseño

Elementos esenciales de un patrón de diseño:


 Nombre: Describe en una o dos palabras un problema de
diseño.
 Problema: Describe cuándo aplicar el patrón, explica el
problema y su contexto.
 Solución: Describe los elementos que constituyen el diseño, sus
relaciones, responsabilidades y colaboraciones (descripción
abstracta).
 Consecuencias: Son los resultados, ventajas e inconvenientes
de aplicar el patrón.
5
DSI - Unidad 2 – 3K3 2021 – Patrones de Diseño

Introducción a los patrones de diseño

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

Ing. Marcela F. Cattaneo


Ing. Germán Vélez 3
DSI – 3K3 Año 2021

Introducción a los patrones de diseño

- Plantilla de definición (continuación) –

● Ejemplo de Código
● Usos conocidos
● Patrones relacionados

Exp 7
DSI - Unidad 2 – 3K3 2021 – Patrones de Diseño

Introducción a los patrones de diseño


¿A qué ayudan los patrones?
Problemas de diseño que resuelven:
● Encontrar los objetos apropiados

● Determinar la granularidad de los objetos

● Definir las interfaces de los objetos

● Especificar las implementaciones de los objetos

● Favorecen la reutilización

● Diseñar para el cambio

Exp 8
DSI - Unidad 2 – 3K3 2021 – Patrones de Diseño

Ing. Marcela F. Cattaneo


Ing. Germán Vélez 4
DSI – 3K3 Año 2021

Introducción a los patrones de diseño


¿A qué ayudan los patrones?
● Encontrar los objetos apropiados

○ Descomponer un sistema de objetos: Tarea difícil porque debemos


considerar encapsulación, flexibilidad, dependencias, reutilización,
extensibilidad, rendimiento.

○ Clases del análisis vs. Clases del diseño: Clases del diseño no siempre
tienen contrapartida en el dominio.

○ Clases del dominio reflejan las realidades presentes, pero no


necesariamente las futuras. Clases del diseño son claves para hacer el
sistema más flexible.
Exp 9
DSI - Unidad 2 – 3K3 2021 – Patrones de Diseño

Introducción a los patrones de diseño


¿A qué ayudan los patrones?
● Determinar granularidad de los objetos: Los objetos pueden
variar mucho en tamaño y número. Los patrones de diseño
describen:
○ Cómo representar subsistemas como objetos (Facade)

○ Cómo permitir un gran número de objetos de granularidad muy fina


(objetos muy pequeños) (Flyweight)

○ Cómo encapsular una operación o comando en un objeto (Visitor y


Command ).

Exp 10
DSI - Unidad 2 – 3K3 2021 – Patrones de Diseño

Ing. Marcela F. Cattaneo


Ing. Germán Vélez 5
DSI – 3K3 Año 2021

Introducción a los patrones de diseño


¿A qué ayudan los patrones?
● Especificar interfaces de los objetos:
○ Los objetos sólo se conocen a través de su interfaz.

○ Recordemos a qué llamamos en este contexto “interfaz del objeto”

la interfaz caracteriza el conjunto de peticiones que se pueden enviar al


objeto

se trata del conjunto de todas las signaturas


definidas por las operaciones de un objeto

No hay modo de saber nada de un objeto o pedirle que haga nada si no es


DSI - Unidad 2 – 3K3 2021 – Patronesadetravés de su interfaz.
Exp 11
Diseño

Introducción a los patrones de diseño


¿A qué ayudan los patrones?
● Especificar interfaces de los objetos:
 Signatura de la operación
Conjunto de todas las signaturas:  Interfaz del objeto
-

nombreOp (par1 : tipoPar1; par2:tipoPar2):tipoValorRetorno

No dice nada de su implementación:


distintos objetos pueden tener interfaces idénticas pero
implementaciones distintas

Exp Anexo I 12
DSI - Unidad 2 – 3K3 2021 – Patrones de Diseño

Ing. Marcela F. Cattaneo


Ing. Germán Vélez 6
DSI – 3K3 Año 2021

Introducción a los patrones de diseño


¿A qué ayudan los patrones?
● Especificar interfaces de los objetos:
○ Ayudan a definir interfaces identificando:
• sus elementos clave
• los tipos de datos que se envían a la interfaz
• lo que debe ser público para los clientes y lo que debe quedar
protegido para que sólo el objeto original acceda.
○ Especifican relaciones entre interfaces.
• Indicando que algunas clases deben tener interfaces parecidas
• Imponiendo restricciones a las interfaces de algunas clases.
○ Exp 13
DSI - Unidad 2 – 3K3 2021 – Patrones de Diseño

Introducción a los patrones de diseño


¿A qué ayudan los patrones?
● Especificar implementación de clases

○ La implementación de un objeto queda definida por su clase.

○ Los patrones de diseño nos dan pautas para definir las clases
participantes

○ Ayudarán a entender la diferencia entre Herencia de clases y


Realización de interfaz, para qué nos sirven y cómo aplicarlas

Exp 14
DSI - Unidad 2 – 3K3 2021 – Patrones de Diseño

Ing. Marcela F. Cattaneo


Ing. Germán Vélez 7
DSI – 3K3 Año 2021

Introducción a los patrones de diseño


¿A qué ayudan los patrones?
● Especificar implementación de clases
○ Muchos patrones dependen de la distinción entre:
herencia de clases y herencia de interfaces
(implementación) (realizaciones de interfaz)

• Mecanismo para extender la funcionalidad de Describe cuándo se puede usar un


una aplicación reutilizando la funcionalidad de objeto en el lugar de otro (siendo
las clases padres. que ambos realizan la misma interfaz)
• Permite definir rápidamente un nuevo tipo de
objetos basándose en otros, heredando lo que
necesita
Ventaja
Exp 15
DSI - Unidad 2 – 3K3 2021 – Patrones de Diseño Anexo II

Introducción a los patrones de diseño


¿A qué ayudan los patrones?
● Especificar implementación de clases

○ Herencia de clases ○ Realizaciones de Interfaz

Servici oA

proveerServicio()
<<Interface>>
usa
Cliente IntServicios

Servic ioB
proveerServicio()

proveerServicio()

Exp 16
DSI - Unidad 2 – 3K3 2021 – Patrones de Diseño

Ing. Marcela F. Cattaneo


Ing. Germán Vélez 8
DSI – 3K3 Año 2021

Introducción a los patrones de diseño


¿A qué ayudan los patrones?
● Especificar implementación de clases
Un principio del diseño orientado a objetos reutilizable dice:

“programar para una interfaz, no para una implementación”

○ 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.

○ Los clientes desconocen las clases que implementan dichos objetos;


sólo conocen la definición de la interfaz o las clases abstractas
○ No declarar variables como instancias de una clase concreta, sino referenciando a
la clase abstracta o interfaz
Exp 17
DSI - Unidad 2 – 3K3 2021 – Patrones de Diseño ejemplo

Introducción a los patrones de diseño


¿A qué ayudan los patrones?
● Favorecen la reutilización – Mecanismos de reutilización

• Reutilización de Caja Blanca: el interior de


HERENCIA las clases padres se hacen visibles a las
subclases

• Reutilización de Caja Negra: los detalles


COMPOSICION
internos de los objetos no son visibles.

Exp 18
DSI - Unidad 2 – 3K3 2021 – Patrones de Diseño

Ing. Marcela F. Cattaneo


Ing. Germán Vélez 9
DSI – 3K3 Año 2021

Introducción a los patrones de diseño


¿A qué ayudan los patrones?
● Favorecen la reutilización
• Definición estática
• Sencilla de usar
• Es fácil modificar la implementación
HERENCIA estáticamente no en tiempo de ejecución
• Rompe el encapsulamiento

• 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

Introducción a los patrones de diseño


¿A qué ayudan los patrones?
● Favorecen la reutilización

Con herencia Con delegación (composición)


B hereda de A B conoce a A (tiene un atributo oa: A
el método m1 para resolver m1 B invoca oa.m1

A En tiempo de ejecución podemos cambiar oa


a1 por otro obj. del mismo tipo (misma interfaz)
B A
m 1()
oa : A a1

m1() m1()

B
m1() {oa.m 1()}

20
DSI - Unidad 2 – 3K3 2021 – Patrones de Diseño

Ing. Marcela F. Cattaneo


Ing. Germán Vélez 10
DSI – 3K3 Año 2021

Introducción a los patrones de diseño


¿A qué ayudan los patrones?
● Favorecer la reutilización

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”.

“Favorecer la composición de objetos frente a la herencia de clases”

Exp 21
DSI - Unidad 2 – 3K3 2021 – Patrones de Diseño

Introducción a los patrones de diseño


¿A qué ayudan los patrones?
● Favorecer la reutilización
Delegación
– Es un modo de lograr que la composición sea tan potente para la
reutilización como es la herencia.
– Un objeto receptor delega operaciones en su delegado
Ventaja: Hace que sea fácil combinar comportamientos en tiempo de
ejecución y cambiar la manera en que éstos se combinan.
Inconveniente: se obtiene software más flexible (dinámico y altamente
parametrizado) pero más difícil de entender.

Exp 22
DSI - Unidad 2 – 3K3 2021 – Patrones de Diseño

Ing. Marcela F. Cattaneo


Ing. Germán Vélez 11
DSI – 3K3 Año 2021

Introducción a los patrones de diseño


Repasamos conceptos fundamentales:
Delegación
usa
D e le g a d o r D e le g a d o
• Estructura:
1

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

Introducción a los patrones de diseño


Repasamos conceptos fundamentales:
Interfaz S e r vi c i o A

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 ( )

○ En la figura anterior, la clase Cliente usa otras clases que implementan


la interfaz IntServicios. La interfaz IntServicios provee la indirección
que mantiene a la clase Cliente independiente de las clases que
proveen los servicios (clase ServicioA y ServicioB).

24
DSI - Unidad 2 – 3K3 2021 – Patrones de Diseño

Ing. Marcela F. Cattaneo


Ing. Germán Vélez 12
DSI – 3K3 Año 2021

Introducción a los patrones de diseño


Repasamos conceptos fundamentales:
● Por lo general, los conceptos Interfaz y Delegación son usados juntos.
Muchos otros patrones usan el patrón Interfaz. Este patrón es utilizado en
el lenguaje Java para simular la herencia múltiple.

Delegación + Interfaz

25
DSI - Unidad 2 – 3K3 2021 – Patrones de Diseño

Introducción a los patrones de diseño


Diseñar para el cambio
● La clave para la reutilización es anticiparse a los nuevos
requisitos y cambios, de modo que los sistemas evolucionen de
forma adecuada.

● Cada patrón permite que algunos aspectos de la estructura del


sistema puedan cambiar independientemente de otros
aspectos.

26
DSI - Unidad 2 – 3K3 2021 – Patrones de Diseño

Ing. Marcela F. Cattaneo


Ing. Germán Vélez 13
DSI – 3K3 Año 2021

Introducción a los patrones de diseño


Causas comunes de rediseño
● Crear un objeto indicando la clase: Abstract Factory, Factory
Method, Prototype
● Dependencia de operaciones concretas: Chain of
Responsability, Command
● Dependencia de plataformas hardware o software: Abstract
Factory, Bridge
● Dependencia sobre representación de objetos: Abstract
Factory, Bridge, Memento, Proxy

Exp 27
DSI - Unidad 2 – 3K3 2021 – Patrones de Diseño

Introducción a los patrones de diseño


Causas comunes de rediseño
● Dependencias de algoritmos: Builder, Iterator, Strategy,
Template Method, Visitor
● Acoplamiento fuerte entre clases: Abstract Factory, Bridge,

Chain of Responsability, Command, Facade, Mediator, Observer


● Añadir funcionalidad mediante la herencia: Bridge, Chain of

Responsability, Composite, Decorator, Observer, Strategy


● Incapacidad de cambiar clases convenientemente: Adapter,

Decorator, Visitor
Exp 28
DSI - Unidad 2 – 3K3 2021 – Patrones de Diseño

Ing. Marcela F. Cattaneo


Ing. Germán Vélez 14
DSI – 3K3 Año 2021

Introducción a los patrones de diseño

¿Cómo seleccionar un patrón?


1. Considerar de qué forma los patrones resuelven problemas
de diseño
2. Leer la sección que describe el propósito de cada patrón
3. Estudiar las interrelaciones entre patrones
4. Analizar patrones con el mismo propósito
5. Examinar las causas de rediseño
6. Considerar qué debería ser variable en su diseño

29
DSI - Unidad 2 – 3K3 2021 – Patrones de Diseño

Introducción a los patrones de diseño


¿Cómo usar un patrón?
1. Leer el patrón, todos sus apartados, para tener una visión global.
2. Estudiar la Estructura, Participantes y Colaboraciones
3. Mirar el ejemplo de código
4. Asociar a cada participante del patrón un elemento de su
aplicación.
5. Definir las clases.
6. Definir nombres específicos de la aplicación para las operaciones
del patrón.
7. Implementar las operaciones para llevar a cabo las
responsabilidades y colaboraciones del patrón.
Exp 30
DSI - Unidad 2 – 3K3 2021 – Patrones de Diseño

Ing. Marcela F. Cattaneo


Ing. Germán Vélez 15
DSI – 3K3 Año 2021

Introducción a los patrones de diseño Clasificación

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.

Ámbito: Especifica si el patrón se aplica principalmente a clases o a objetos


- Clase: Se ocupan de las relaciones entre clases y sus subclases (se
establecen por medio de la herencia de modo que son estáticas).
- Objeto: Tratan con las relaciones entre objetos, que pueden cambiarse
en tiempo de ejecución y son más dinámicas.
Exp 31
DSI - Unidad 2 – 3K3 2021 – Patrones de Diseño

Introducción a los patrones de diseño


● Clasificación Propósito

Creación Estructurales Comportamiento

Factory Method Adapter (de clases) Interpreter


Clase Template Method
Abstract Factory Adapter (de objetos) Chain of Responsability
Builder Bridge Command
Prototype Composite Iterator
Ámbito Decorator Mediator
Singleton
Objeto Facade Memento
Flyweight Observer
Proxy State
Strategy
Visitor
32
DSI - Unidad 2 – 3K3 2021 – Patrones de Diseño

Ing. Marcela F. Cattaneo


Ing. Germán Vélez 16
DSI – 3K3 Año 2021

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.

● Patrón de Creación asociado a Clases: usa herencia para variar


la clase que es instanciada.
● Patrón de Creación asociado a Objetos: delega la instanciación
a otro objeto

Clasificación 33
DSI - Unidad 2 – 3K3 2021 – Patrones de Diseño

Patrones de Creación
● Se encapsula:

○ qué clases concretas usa el sistema

○ cómo se crean las instancias de esas clases


● El sistema conoce sus interfaces tal como las definen las clases
abstractas
● Flexibilidad en qué se crea, quién lo crea, cómo se crea y
cuándo se crea.

Clasificación 34
DSI - Unidad 2 – 3K3 2021 – Patrones de Diseño

Ing. Marcela F. Cattaneo


Ing. Germán Vélez 17
DSI – 3K3 Año 2021

Patrones de Creación
● Abstract Factory (Fábrica abstracta):

○ Proporciona un contrato para la creación de familias de objetos


relacionados o dependientes sin tener que especificar su clase concreta.
● Builder (Constructor)
○ Separa la construcción de un objeto complejo de su representación para que
el mismo proceso de construcción pueda dar lugar a diferentes
representaciones.
○ Se usa cuando el algoritmo para crear un objeto complejo debe ser
independiente de las partes de cómo se compone dicho objeto y cómo se
ensamblan.
○ Se aplica cuando el proceso de creación debe permitir diferentes
representaciones del objeto que está siendo construído.
35
DSI - Unidad 2 – 3K3 2021 – Patrones de Diseño

Patrones de Creación
● Factory Method (Método de fabricación):

○ Permite definir un método estándar para crear un objeto, además del


constructor propio de la clase, si bien la decisión del objeto a crear se delega
en las subclases.
● Prototype (Prototipo)
○ Crea nuevas instancias de clases mediante copia de su prototipo.
○ Se utiliza cuando se desea crear un objeto que sea una copia de sí mismo.

● 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

Ing. Marcela F. Cattaneo


Ing. Germán Vélez 18
DSI – 3K3 Año 2021

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

Ing. Marcela F. Cattaneo


Ing. Germán Vélez 19
DSI – 3K3 Año 2021

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

Ing. Marcela F. Cattaneo


Ing. Germán Vélez 20
DSI – 3K3 Año 2021

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

Ing. Marcela F. Cattaneo


Ing. Germán Vélez 21
DSI – 3K3 Año 2021

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

Ing. Marcela F. Cattaneo


Ing. Germán Vélez 22
DSI – 3K3 Año 2021

Anexo I: Enlace dinámico


● Cuando se envía una petición a un objeto, la operación concreta
que se ejecuta depende tanto de la petición como del objeto que la
recibe.

● Enlace dinámico: asociación en tiempo de ejecución entre una


petición a un objeto y una de sus operaciones.

● Permite sustituir objetos en tiempo de ejecución por otro con la


misma interfaz  Polimorfismo

189
DSI - Unidad 2 – 3K3 2021 – Patrones de Diseño

Anexo II: Concepto de Interfaz


● Una interfaz es una colección de operaciones con un nombre, que se usa
para especificar un servicio de una clase o de un componente.
● En UML, las interfaces se emplean para modelar las líneas de separación
de un sistema. Al declarar una interfaz, se puede enunciar el
comportamiento deseado de una abstracción independientemente de una
implementación de ella.
● De esta manera, una interfaz especifica un conjunto de características
públicas. La idea clave es separar la especificación de funcionalidad (la
interfaz) de su implementación por un clasificador (como una clase o
subsistema). 190
DSI - Unidad 2 – 3K3 2021 – Patrones de Diseño

Ing. Marcela F. Cattaneo


Ing. Germán Vélez 23
DSI – 3K3 Año 2021

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

Ing. Marcela F. Cattaneo


Ing. Germán Vélez 24

También podría gustarte