Fachada (patrón de diseño)

Este artículo puede contener trabajos no publicados o declaraciones no verificadas (octubre 2014).

Puede ayudar agregando referencias o eliminando contenido no publicado. Consulte la página de discusión para obtener más detalles.

En ingeniería de software , la fachada del patrón de diseño (o patrón de diseño ) está destinada a ocultar un diseño complejo y una interfaz difícil de entender (la complejidad aparece "naturalmente" con el desarrollo del subsistema en cuestión).

Objetivo

La fachada ayuda a simplificar esta complejidad al proporcionar una interfaz simple al subsistema. Normalmente la fachada se consigue reduciendo la funcionalidad de esta última, pero aportando todas las funciones necesarias para la mayoría de usuarios.

La fachada encapsula la complejidad de las interacciones entre los objetos comerciales que participan en un flujo de trabajo .

Una fachada se puede utilizar para:

Se utiliza un adaptador cuando se debe respetar una interfaz bien definida. La fachada se utiliza para simplificar el uso de la API.

Estructura

FacadeDesignPattern.png

Fachada La fachada descarta los paquetes 1, 2 y 3 del resto de la aplicación. Clientela Objetos que utilizan el patrón de diseño de Fachada para acceder a recursos abstractos.

Ejemplo

Java

El siguiente ejemplo esconde una API de administración de calendario complicada detrás de una fachada más simple. Muestra :

Date: 1980-08-20 20 jours après : 1980-09-09 import java.util.*; // Façade class UserfriendlyDate { GregorianCalendar gcal; public UserfriendlyDate(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 addDays(int days) { gcal.add(Calendar.DAY_OF_MONTH, days); } public String toString() { return String.format("%1$tY-%1$tm-%1$td", gcal); } } // 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 jours après : "+d); } }