PATRONES DE DISEÑO
Maximiliano González
Javier Madrid
Anabela Torrealba
Patrones de Diseño

Patrones a tratar:

Facade.

Singleton.

Mediator.
Facade - Definición
Facade es un patrón fundamental de
diseño que provee una interfaz
única para un conjunto de
interfaces dentro de un subsistema.
Define una interfaz de nivel superior
que hace que el uso del subsistema
sea mas fácil.
Facade - Motivación


La estructuración del sistema en
subsistemas ayuda a reducir la
complejidad.
La interfaz de las clases o de un
grupo de clases puede ser
compleja.
Facade - Estructura
Facade - Beneficios



Esconde la implementación de los
subsistemas de los clientes.
Promueve un acoplamiento débil
entre el subsistema y sus clientes.
Simplifica la portabilidad de los
subsistemas hacia otras
plataformas.
Facade - Ejemplo no dirigido a software
Facade - Ejemplo no dirigido a software
Facade - Ejemplo dirigido a software
Singleton - Definición
Singleton es un tipo de patrón
creacional que asegura que una
clase tiene una única instancia y
provee un medio de acceso global a
dicha instancia.
Singleton - Aplicabilidad
El patrón Singleton se utiliza cuando:


Debe haber exactamente una instancia de
una clase y ésta debe ser accesible para
los clientes desde un punto de acceso
conocido.
La única instancia deba ser extensible a
través de una subclase y los clientes
puedan usar una instancia que extienda a
la única sin modificar su código.
Singleton - Estructura
Singleton - Beneficios



Acceso controlado a la instancia
única
Es una mejora a las variables
globales
Permite un número variable de
instancias
Singleton - Problema

Programas con múltiples hilos de
ejecución.

Solución: Exclusión mutua
Singleton - Implementación

Los aspectos más importantes a
tomar en cuenta a la hora de
implementar una clase Singleton
son:


Asegurar una única instancia
Posibles subclases de la clase Singleton
Singleton - Declaración en Java
Singleton - Ejemplos

Algunos ejemplos de clases que
requieren una única instanciación
son:



Ratón
File System
Impresora
Mediator - Definición
Define a un objeto que encapsula
cómo interactúan un conjunto de
objetos.
Promueve bajo acoplamiento, evitando
que los objetos se comuniquen entre
sí explícitamente, y permite variar la
interacción entre ellos de forma
independiente.
Mediator - Motivación
Problema:
 Cuando muchos objetos interactúan con
otros objetos, se forma una estructura
compleja, con muchas conexiones entre
ellos.
 Diálogos diferentes (fuentes, imprimir)
tienen dependencias diferentes entre sus
elementos.
 Aunque se utilicen los mismos elementos,
no se pueden reutilizar las clases.
 Es engorroso adaptar las clases mediante
herencia.
Mediator - Motivación
Reusabilidad:
 Particionar un sistema en muchos objetos
la facilita, pero la proliferación de
interconexiones entre ellos la reduce.
 Gran cantidad de interconexiones hace
difícil que un objeto pueda trabajar sin la
ayuda de otros.
 El sistema al estar distribuido entre
muchos objetos puede resultar difícil
cambiar su comportamiento de forma
significativa.
Mediator - Motivación
Solución:
 Encapsular el comportamiento colectivo
en un solo objeto (mediador).
 Coordinar y controlar las interacciones
entre los objetos.
 Evitar a los objetos se comuniquen
directamente con los otros objetos.
 Los objetos conocerán únicamente al
mediador, de esta forma se reduce el
número de interconexiones.
Mediator - Ejemplo
En una implementación de un diálogo
en una GUI existen dependencias
entre los elementos del diálogo:

Seleccionar un elemento en la list box
cambia el contenido en otro campo.
Mediator - Aplicabilidad



Cuando un conjunto grande de objetos se
comunica de una forma bien definida,
pero compleja.
En la reutilización de objetos. Existe
dificultad al hacer referencia a varios
objetos para mantener comunicación.
Cuando el comportamiento de muchos
objetos está distribuido entre muchas
clases, adaptándolo sin mucha herencia.
Mediator - Participantes



Mediador: define la interfaz para
comunicarse con los otros objetos.
Mediador concreto: Implementa el
comportamiento cooperativo entre los
Objetos. Conoce a los Objetos y los
mantiene.
Colegas: Cada colega (objeto) conoce su
mediador, y usa a este para comunicarse
con otros objetos.
Mediator - Estructura
Mediator - Colaboraciones


Los colegas envían y reciben peticiones (requests)
de un objeto mediador.
El mediador implementa el comportamiento
cooperativo dirigiendo las peticiones los objetos
adecuados.
Mediator - Consecuencias

Ventajas:

Reduce la herencia.

Desacopla a los objetos.

Simplifica la comunicación entre objetos.

Abstrae como los objetos cooperan.
Mediator - Consecuencias

Desventajas:

Centraliza el control:
Cambia la complejidad en las
interacciones entre objetos por
complejidad en el objeto mediador.
 Puede ser muy complejo, difícil de
entender y modificar.

Mediator - Implementación

Omitir la clase abstracta Mediator:


No es necesario crear una clase
abstracta Mediador cuando las clases
colega sólo trabajan con un mediador.
El acoplamiento abstracto de dicha
clase permite que los objetos trabajen
con diferentes Mediador y viceversa.
Mediator - Implementación

Comunicación Objeto y Mediador:



Los objetos se comunican a su mediador
cuando tiene lugar un evento.
Las clases de objetos cada vez que cambian
su estado envían notificaciones al mediador.
El mediador responde propagando los
efectos de dichos eventos a los otros
objetos.
Mediator – Patrones relacionados


Si se abstrae un subsistema de objetos con
protocolo unidireccional se usa Facade,
provee una interfaz mas conveniente, ya
que el Mediator usa un protocolo
mutidireccional.
Los colegas pueden comunicarse con el
mediador mediante Observer.
Descargar

PATRONES DE DISEÑO