Patrón Fachada

26
Patrón Fachada Facade Pattern AUTOR: Rodríguez Galarreta, José Pedro CURSO: Técnicas de Programación Orientado a Objetos

description

Patrón Fachada

Transcript of Patrón Fachada

Page 1: Patrón Fachada

Patrón FachadaFacade Pattern

AUTOR:Rodríguez Galarreta, José Pedro

CURSO:Técnicas de Programación Orientado a Objetos

Page 2: Patrón Fachada

Introducción

Page 3: Patrón Fachada

Patrones• Un esquema que se usa para solucionar un problema.

• El esquema ha sido probado extensivamente, y ha funcionado.

• Se tiene experiencia sobre su uso.

Page 4: Patrón Fachada

Patrones de diseño de software

• Reutilizar diseños abstractos que no incluyan detalles de la

implementación.

• Un patrón es una descripción del problema y la esencia de su

solución, que se puede reutilizar en casos distintos.

• Es una solución adecuada a un problema común.

• Asociado a orientación a objetos, pero el principio general es

aplicable a todos los enfoques de diseño software.

Page 5: Patrón Fachada

Clasificación de Patrones de Diseño

Creacional(Implica el proceso de instanciar objetos)

Fábrica Abstracta, Método Fábrica,Constructor, Prototipo, Singular

Estructural(Composición de objetos)

Adaptador, Puente, Compuesto,

Decorador, Fachada, Peso Mosca, Apoderado

De Comportamiento(Como se comunican los objetos, cooperan y distribuyen las responsabilidades)

Cadena de Responsabilidad, Comando, Iterador, Mediador, Memento, Observador, Estado, Estrategia, Visitante, Método Plantilla

Page 6: Patrón Fachada

Patrón MVC (Model-View-Controller)

Page 7: Patrón Fachada

Patrón DAO (Objeto de Acceso a Datos)

Page 8: Patrón Fachada

Patrón Fachada

Page 9: Patrón Fachada

Patrón Fachada

Page 10: Patrón Fachada

Patrón Fachada (Facade)1. Intención:

El patrón fachada proporciona una interfaz de alto

nivel para un subsistema, que oculta las interfaces

de bajo nivel de las clases que lo implementan.

Page 11: Patrón Fachada

Patrón Fachada (Facade)2. Problema:

Un cliente trata de utilizar los servicios ofrecidos por un

subsistema actuando directamente sobre las interfaces de

las clases que lo implementan, esto genera fuertes

dependencias hacia muchas de estas interfaces de bajo

nivel .

Page 12: Patrón Fachada

Referencia: http://best-practice-software-engineering.ifs.tuwien.ac.at/patterns/facade.html

Problema

Page 13: Patrón Fachada

Patrón Fachada (Facade)3. Solución:

Aislar a los clientes de las interfaces de bajo nivel del

subsistema colocando entre ambos una clase denominada

genéricamente “fachada” del subsistema.

Page 14: Patrón Fachada

Referencia: http://best-practice-software-engineering.ifs.tuwien.ac.at/patterns/facade.html

Solución

Page 15: Patrón Fachada

Patrón Fachada (Facade)4. Objetivo:

El objetivo de dicho patrón es simplificar las relaciones que existen

entre los objetos, reduciendo el número de actores en las mismas

mediante el uso de una “fachada” que expone la lógica a compartir.

Page 16: Patrón Fachada

Patrón Fachada (Facade)5. Aplicabilidad: Usaremos este patrón cuando:

•Queramos proporcionar una interfaz sencilla de acceso a un

subsistema complejo.

•Hay mucho acoplamiento entre clientes y las clases del subsistema.

•Se tiene un subsistema que ofrece una funcionalidad muy rica y

compleja, y un conjunto significativo de clientes que solo necesitan

usar una parte reducida de la misma.

Page 17: Patrón Fachada

Patrón Fachada (Facade)6. Estructura

Fachada

Subsistema 1

Subsistema 3

Subsistema 2

Page 18: Patrón Fachada

Patrón Fachada (Facade)6. Estructura (2)

Page 19: Patrón Fachada

Patrón Fachada (Facade)

7. Participantes

•FachadaoSabe qué clases del subsistema son las encargadas de tratar la petición.

oDelega las peticiones del cliente en los objetos apropiados del subsistema.

•Clases del subsistemaoImplementan la funcionalidad

oGestionan el trabajo asignado por la fachada

Page 20: Patrón Fachada

Patrón Fachada (Facade)

8. Colaboraciones

•Los clientes se comunican con el subsistema a través de la

fachada.

•Los clientes que usan la fachada no acceden a los objetos del

subsistema directamente.

Page 21: Patrón Fachada

Patrón Fachada (Facade)

9. Consecuencias

•Protege a los clientes de los componentes del subsistema.

•Promueve el bajo acoplamiento entre el subsistema y sus

clientes.

Page 22: Patrón Fachada

Patrón Fachada (Facade)

10. Patrones Relacionados:

•Patrón Singleton.- dado que en determinadas ocasiones las fachadas

pueden ser instancias únicas

•Agente Dispositivo.- Fachada y clase de un objeto físico real.

11. Buenas practicas Relacionadas:

•Controlador (GRASP).- Actúa como punto de entrada en la capa lógica.

Page 23: Patrón Fachada

Ejemplo:

Un caso particular podría ser el de muchos objetos que consumen distintos servicios de

entidades, los cuales se presentan en varios

“canales” (en las gráficas son los objetos

Permission, Data y CustomActions).

Page 24: Patrón Fachada

Ejemplo 1:

Page 25: Patrón Fachada

Demo

Page 26: Patrón Fachada

GraciasJosé Pedro Rodríguez Galarreta

@JPedroScript