Patrones de Diseño - Patron Facade / Fachada - ¿Que es el Patrón de Diseño Facade?

Buenos días siguiendo, con la guía de patrones de diseño hoy vamos a ver el patrón Facade o Fachada.



Patrones de Diseño - ¿Que es el Patrón de Diseño Facade?

El patrón de diseño facade o fachada nos permite simplificar el interface de comunicación entre dos objetos X y Z de tal forma que para el objeto X sea más sencillo interactuar con el objeto Z. De esta manera el cliente solo se conecta con una interfase sencilla, mientra que la interfase sencilla se conecta a su vez a otras interfases mas complejas.

Proporciona una interfaz unificada para un conjunto de interfaces de un sistema. Define una interfaz de alto nivel que hace que el subsistema sea mas fácil de usar.

Diagrama UML

Patrones de Diseño - Patron Facade / Fachada - ¿Que es el Patrón de Diseño Facade?


Facade: Conoce cuales clases del subsistema son responsables de una petición y delega las peticiones de los clientes en los objetos del subsistema.
Clases del subsistema: Implementan la funcionalidad del subsistema, manejan el trabajo asignado por el objeto Facade y ademas de esto no tienen ningún conocimiento del Facade.

Nombre del patrón:
Facade o Fachada

Clasificación del Patrón:
Estructural

Intención:
Proporcionar una interfaz simplificada para un grupo de subsistemas o un sistema complejo.

Motivación:
Simplificar el acceso a un conjunto de clases proporcionando una única clase que todos utilizan para comunicarse con dicho conjunto de clases.

Reducir la complejidad y minimizar dependencias


Ejemplo
Problema: Un cliente necesita conectarse a una impresora pero desconoce el nombre de la impreso y la configuración de la misma solo sabe el texto que la envía a la misma que se debe imprimir, el cliente (como todo cliente/usuario) al meter manos en este dispositivo puede ocasionar problemas graves.

Solución:
Bueno partiendo de la base, tratemos de identificar los componentes, por un lado tenemos el cliente, por el otro la impresora, pero si al cliente le damos el control de la impresora corremos el riesgo que meta la pata, la solución a esto es crear una interfase la cual se conecte con la impresora y que la misma la administre y a su esta sea consumida por el cliente.

Patrones de Diseño - ¿Que es el Patrón de Diseño Facade?


Impresora:
package ar.com.patronesdisenio.facade.impresora;
/**
* @author nconde
*/
public class Impresora {

private String nombre;
private String tipoHoja;
private String texto;

public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getTipoHoja() {
return tipoHoja;
}
public void setTipoHoja(String tipoHoja) {
this.tipoHoja = tipoHoja;
}
public String getTexto() {
return texto;
}
public void setTexto(String texto) {
this.texto = texto;
}
}



FacadeCentral:
package ar.com.patronesdisenio.facade.central;

import ar.com.patronesdisenio.facade.impresora.Impresora;

/**
*
* @author nconde
*
*/
public class FacadeCentral {

private Impresora impresora;

public void imprimir(String texto){
impresora = new Impresora();
impresora.setNombre("NICO-Printer");
impresora.setTipoHoja("A4");
impresora.setTexto(texto);
}

}



ClienteMain:
package ar.com.patronesdisenio.facade.cliente;
import ar.com.patronesdisenio.facade.central.FacadeCentral;

public class ClienteMain {

/**
* @param args
*/
public static void main(String[] args) {

FacadeCentral facadeCentral = new FacadeCentral();
facadeCentral.imprimir("Texto a imprimir");
}

}


En este ejemplo vemos como el cliente desconoce como se imprime el nombre de la impresora y la existencia de la misma solo ve lo que deseamos  el "imprimir".

Bueno gente espero que allá quedado claro y cualquier cosa me avisan!
Patrones de Diseño - Patron Facade / Fachada - ¿Que es el Patrón de Diseño Facade? Patrones de Diseño - Patron Facade / Fachada - ¿Que es el Patrón de Diseño Facade? Reviewed by El lado oscuro de java on octubre 14, 2014 Rating: 5

5 comentarios:

  1. Muchas gracias por el artículo. Me fue de mucha utilidad :)

    ResponderEliminar
  2. Gracias! es la explicación mas sencilla y clara que encontré!

    ResponderEliminar
    Respuestas
    1. Gracias Pol, todos mis post son una recopilacion y un resumen de varias fuentes a fin que se entienda claramente! Saludos!

      Eliminar
  3. Este comentario ha sido eliminado por un administrador del blog.

    ResponderEliminar

Con la tecnología de Blogger.