Patrón Fachada
-
Upload
jpedro-rodriguez -
Category
Documents
-
view
250 -
download
2
description
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