diseño de patrones (fachada)

23
Fanny E. Ruiz Ch. Bayardo Sarmiento Directora: Ing. Germania Rodríguez Lunes, 14 de Noviembre de 2011 Escuela de Ciencias de la Escuela de Ciencias de la Computación Computación ARQUITECTURA DE APLICACIONES FACADE (FACHADA)

Upload: fanny-ruiz

Post on 23-Jun-2015

4.814 views

Category:

Documents


2 download

DESCRIPTION

Prentacion y elaboracion de la fachada en los proyectos

TRANSCRIPT

Page 1: Diseño de Patrones (Fachada)

Fanny E. Ruiz Ch.Bayardo Sarmiento

Directora: Ing. Germania Rodríguez

Lunes, 14 de Noviembre de 2011

Escuela de Ciencias de la ComputaciónEscuela de Ciencias de la Computación

ARQUITECTURA DE APLICACIONESFACADE (FACHADA)

Page 2: Diseño de Patrones (Fachada)

• Propósito

• Motivación

• Aplicabilidad

• Estructura

• Participantes

• Colaboraciones

• Consecuencias

• Implementación

• Código de Ejemplo

AGENDA

Page 3: Diseño de Patrones (Fachada)

• Propósito:

– Interfaz unificada para un conjunto de interfaces de un subsistema.

– Hace que el subsistema sea mas fácil de usar

FACADE (FACHADA)

Page 4: Diseño de Patrones (Fachada)

• Reduce la complejidad.

• Minimizar la comunicación y dependencias entre subsistemas.

• Introducir un objeto fachada que proporcione una interfaz única y simplificada para los servicios del sistema.

Por lo general, dentro de un entorno de programación, la mayoría de los clientes de un compilador no suelen preocuparse de detalles como el análisis sintáctico y la generación de código.

MOTIVACIÓN

Page 5: Diseño de Patrones (Fachada)

Para proporcionar una interfaz de mas alto nivel que aísle a estas clases de los clientes del subsistema de compilación también incluye una clase compilador. Esta clase define una interfaz uniforme para la funcionalidad del compilador.

La clase compilador funciona como una fachada:

- Ofrece a los clientes una interfaz única y

simple

MOTIVACIÓN

Page 6: Diseño de Patrones (Fachada)

Esta clase aglutina las clases que implementan la funcionalidad del compilador sin ocultarlas por completo.

La fachada del compilador facilita la vida a los programadores.

Esta clase aglutina las clases que implementan la funcionalidad del compilador sin ocultarlas por completo.

MOTIVACIÓN

Page 7: Diseño de Patrones (Fachada)

Se usa el patrón Fachada cuando:

Proporcionar una interfaz simple para un subsistema complejo.

– Hace que el subsistema sea mas reutilizable y fácil de personalizar).

– Hace mas fácil de usar para aquellos para aquellos clientes que no necesitan personalizarlo.

APLICABILIDAD

Page 8: Diseño de Patrones (Fachada)

Se usa el patrón Fachada cuando:

Haya muchas dependencias entre los clientes y las clases que implementan una abstracción.

– Introduce una fachada para desacoplar el subsistema de sus clientes y de otros.

– Independencia entre subsistemas y la portabilidad.

APLICABILIDAD

Page 9: Diseño de Patrones (Fachada)

Se usa el patrón Fachada cuando:

Queramos dividir en subcapas nuestros subsistemas.

- Usa una fachada para definir un punto de entrada en cada nivel del subsistema.

- Se pueden simplificar las dependencias entre ellos haciendo que se comuniquen entre si a través de sus fachadas.

APLICABILIDAD

Page 10: Diseño de Patrones (Fachada)

ESTRUCTURA

Page 11: Diseño de Patrones (Fachada)

Se usa el patrón Fachada cuando:

Fachada: (Compilador)

Sabe que clases del subsistema son las responsables ante una petición.

Delega las peticiones de los clientes en los objetos apropiados del subsistema.

PARTICIPANTES

Page 12: Diseño de Patrones (Fachada)

Se usa el patrón Fachada cuando:

Clases del subsistema (Léxico, Sintáctico, NodoPrograma, etc.)

Implementan la funcionalidad del subsistema.

Realizan las labores encomendadas por el objeto Fachada.

No conocen a la fachada; no tienen referencias a ellas.

PARTICIPANTES

Page 13: Diseño de Patrones (Fachada)

• Los clientes se comunican con el subsistema enviando peticiones al objeto Fachada, el cual las reenvía a los objetos apropiados del subsistema.

Los objetos del subsistema realizan el trabajo final, y la fachada hace algo de trabajo para pasar de su interfaz a las del subsistema.

• Los clientes que usan la fachada no tienen que acceder directamente a los objetos del subsistema.

COLABORACIONES

Page 14: Diseño de Patrones (Fachada)

El patrón Fachada proporciona las siguientes ventajas:

• Oculta a los clientes los componentes del subsistema, haciendo que el sistema sea mas fácil de usar.

• Promueve un débil acoplamiento entre el subsistema y sus clientes.

• No impide que las aplicaciones usen las clases del subsistema, de ser necesario. De este modo se puede elegir entre facilidad de uso y generalidad.

CONSECUENCIAS

Page 15: Diseño de Patrones (Fachada)

Para implementar una Fachada se debe tener en cuenta:

• Reducción del acoplamiento cliente-subsistema. Esto puede verse reducido aun mas haciendo que la Fachada sea una clase abstracta con subclases concretas para las diferentes implementaciones de un subsistema.

• Clases del subsistema publicas o privadas. Un subsistema se parece a una clase en que ambos tienen interfaces y los dos encapsulan algo.

IMPLEMENTACIÓN

Page 16: Diseño de Patrones (Fachada)

Una clase encapsula estado y operaciones, mientras que un subsistema encapsula clases.

IMPLEMENTACIÓN

Page 17: Diseño de Patrones (Fachada)

CODIGO DE EJEMPLO

Page 18: Diseño de Patrones (Fachada)

CODIGO DE EJEMPLOimport java.util.Calendar;import java.util.Formatter;import java.util.GregorianCalendar; /** Fachada */public class FormatoFecha { private GregorianCalendar gcal; public FormatoFecha(String isodate_ymd) { String[] a = isodate_ymd.split("-"); gcal = new GregorianCalendar(Integer.parseInt(a[0]), Integer.parseInt(a[1])-1, Integer.parseInt(a[2])); } public void sumarDias(int dias) { gcal.add(Calendar.DAY_OF_MONTH, dias); } public String toString() { return String.format("%1$tY-%1$tm-%1$td", gcal); }}

Page 19: Diseño de Patrones (Fachada)

CODIGO DE EJEMPLO

/** Cliente */public class Cliente { public static void main(String[] args) { FormatoFecha d = new FormatoFecha("2011-05-15"); System.out.println("Fecha: "+d); d.sumarDias(15); System.out.println("15 días después: "+d); }}

Page 20: Diseño de Patrones (Fachada)

USOS CONOCIDOS

• En el framework de aplicaciones ET++, las herramientas están implementadas en un subsistema aparte que incluye una clase FACHADA denominada “ProgrammingEnvironment”, que define operaciones tales como InspectObject e InspectClass.

Page 21: Diseño de Patrones (Fachada)

USOS CONOCIDOS

• El sistema operativo CHOICES usa fachadas para combinar varios framework en uno solo. Las abstracciones clave son los procesos, almacenamiento y los espacios de direcciones, para cada abstracción existe un subsistema. Estos subsistemas tienen un representante que viene a ser una fachada.

Page 22: Diseño de Patrones (Fachada)

PATRONES RELACIONADOS

• El patrón Abstract Factory puede proporcionar una interfaz para crear un subsistema de objetos de forma independiente a otros subsistemas.

• El patrón Mediator es parecido a Facade en sentido de que abstrae funcionalidad a partir de unas clases existentes.

• Normalmente se necesita un objeto fachada, por tanto estos se implementan como singleton.

Page 23: Diseño de Patrones (Fachada)

BIBLIOGRAFÍA

• Erich GAMMA; Richard Helm; Ralph Johnson; Jhon Vlissides.   Patrones de Diseño. Elementos de Software orientado a Objetos Reutilizables. PEARSON.   Edición en Español 2003.

• Brandon Harris, http://es.wikipedia.org/wiki/Archivo:Facade_UML_class_diagram.svg