Patrón Fachada

Post on 02-Feb-2016

250 views 2 download

description

Patrón Fachada

Transcript of Patrón Fachada

Patrón FachadaFacade Pattern

AUTOR:Rodríguez Galarreta, José Pedro

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

Introducción

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.

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.

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

Patrón MVC (Model-View-Controller)

Patrón DAO (Objeto de Acceso a Datos)

Patrón Fachada

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.

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 .

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

Problema

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.

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

Solución

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.

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.

Patrón Fachada (Facade)6. Estructura

Fachada

Subsistema 1

Subsistema 3

Subsistema 2

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

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

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.

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.

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.

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

Ejemplo 1:

Demo

GraciasJosé Pedro Rodríguez Galarreta

@JPedroScript