Facade (patrón de diseño)

Facade (patrón de diseño)

Facade (patrón de diseño)

Facade UML class diagram.svg

Facade, façade o fachada es un patrón de diseño que sirve para proveer de una interfaz unificada sencilla que haga de intermediaria entre un cliente y una interfaz o grupo de interfaces más complejas.

Facade puede hacer una biblioteca de software más fácil de usar y entender, ya que facade implementa métodos convenientes para tareas comunes; hacer el código que usa la biblioteca más legible, por la misma razón; puede reducir la dependencia de código externo en los trabajos internos de una biblioteca, ya que la mayoría del código lo usa Facade, permitiendo así más flexibilidad en el desarrollo de sistemas; y puede envolver una colección mal diseñada de APIs con un solo API bien diseñado.

Contenido

Problemas que soluciona

Problema: Un cliente necesita acceder a parte de la funcionalidad de un sistema más complejo.

  • Definir una interfaz que permita acceder solamente a esa funcionalidad.

Problema: Existen grupos de tareas muy frecuentes para las que se puede crear código más sencillo y legible.

  • Definir funcionalidad que agrupe estas tareas en funciones o métodos sencillos y claros.

Problema: Una biblioteca es difícilmente legible.

  • Crear un intermediario más legible.

Problema: Dependencia entre el código del cliente y la parte interna de una biblioteca.

  • Crear un intermediario y realizar llamadas a la biblioteca sólo o, sobre todo, a través de él.

Problema: Necesidad de acceder a un conjunto de APIs, que pueden, además, tener un diseño no muy bueno.

  • Crear una API intermedia, bien diseñada, que permita acceder a la funcionalidad de las demás.

Cuidado: Facade debe utilizarse para crear clases sencillas, no clases que "sirvan para todo" o "lo hagan todo".

Ejemplos

Java

El siguiente ejemplo esconde un calendario con un API complicada detrás de un patrón Facade más amigable. La salida es:

Date: 1980-08-20
20 days after: 1980-09-09
import java.util.Calendar;
import java.util.Formatter;
import java.util.GregorianCalendar;
 
/** "Façade" */
class UserfriendlyDate
{
    GregorianCalendar gcal;
 
    public UserfriendlyDate(String isodate_ymd) {
        String[] a = isodate_ymd.split("-");
        gcal = new GregorianCalendar(Integer.valueOf(a[0]).intValue(),
              Integer.valueOf(a[1]).intValue()-1 /* !!! */, Integer.valueOf(a[2]).intValue());
    }
    public void addDays(int days) { gcal.add(Calendar.DAY_OF_MONTH, days); }
    public String toString() { return new Formatter().format("%1$tY-%1$tm-%1$td", gcal).toString();}
}
 
/** "Client" */
class FacadePattern
{
    public static void main(String[] args) 
    {  
        UserfriendlyDate d = new UserfriendlyDate("1980-08-20");   
        System.out.println("Date: "+d);   
        d.addDays(20);   
        System.out.println("20 days after: "+d);
    }
}

Ejemplos de utilización

En Java las clases java.awt.Graphics y java.awt.Font.

Obtenido de "Facade (patr%C3%B3n de dise%C3%B1o)"

Wikimedia foundation. 2010.

Игры ⚽ Нужно решить контрольную?

Mira otros diccionarios:

  • Facade (patrón de diseño) — El patrón Facade sirve para proveer de una interfaz unificada sencilla que haga de intermediaria entre un cliente y una interfaz o grupo de interfaces más complejas …   Enciclopedia Universal

  • Patrón de diseño — Saltar a navegación, búsqueda Los patrones de diseño (design patterns) son la base para la búsqueda de soluciones a problemas comunes en el desarrollo de software y otros ámbitos referentes al diseño de interacción o interfaces. Un patrón de… …   Wikipedia Español

  • Melocotón (patrón de diseño) — Saltar a navegación, búsqueda El patrón de diseño melocotón tiene un comportamiento similar al patrón Singleton, pero con el agregado de melocotonía a su constructor. El objetivo es generar información suficiente como para que la melocotonía sea… …   Wikipedia Español

  • Adapter (patrón de diseño) — El patrón Adapter (Adaptador) se utiliza para transformar una interfaz en otra, de tal modo que una clase que no pudiera utilizar la primera, haga uso de ella a través de la segunda. Contenido 1 Propósito …   Wikipedia Español

  • Constant Lambert — Leonard Constant Lambert Constant Lambert. Retrato realizado por Christopher Wood (1926) …   Wikipedia Español

  • Iglesia del Gesù — Fachada de Giacomo della Porta de la iglesia del Gesù, un precursor del barroco …   Wikipedia Español

  • Abadía de San Víctor de Marsella — Torre fortificada. Abadía de …   Wikipedia Español

  • Catedral de Amiens — Saltar a navegación, búsqueda Catedral de Amiens1 …   Wikipedia Español

  • Enterprise application integration — Este artículo o sección necesita una revisión de ortografía y gramática. Puedes colaborar editándolo (lee aquí sugerencias para mejorar tu ortografía). Cuando se haya corregido, borra este aviso por favor …   Wikipedia Español

Compartir el artículo y extractos

Link directo
Do a right-click on the link above
and select “Copy Link”