Patron Facade - tectijuana/javapdd16a-Archived GitHub Wiki

Patron Facade

Este patrón busca reducir al mínimo la comunicación y dependencias entre subsistemas. Para ello, utilizaremos una fachada, simplificando la complejidad al cliente. El cliente debería acceder a un subsistema a través del Facade. De esta manera, se estructura un entorno de programación más sencillo, al menos desde el punto de vista del cliente (por ello se llama "fachada").

Se debe utilizar cuando:

  • Se quiera proporcionar una interfaz sencilla para un subsistema complejo.
    
  • Se quiera desacoplar un subsistema de sus clientes y de otros subsistemas, haciéndolo más independiente y portable.
    
  • Se quiera dividir los sistemas en niveles: las fachadas serían el punto de entrada a cada nivel. Facade puede ser utilizado a nivel aplicación.
    

Diagrama UML

Diferencias entre la comunicacion con el subsistema y facade. Facade: conoce cuales clases del subsistema son responsables de una petición. Delega las peticiones de los clientes en los objetos del subsistema. Subsistema: manejar el trabajo asignado por el objeto Facade. No tienen ningún conocimiento del Facade (no guardan referencia de éste).

Los clientes se comunican con el subsistema a través de la facade, que reenvía las peticiones a los objetos del subsistema apropiados y puede realizar también algún trabajo de traducción. Los clientes que usan la facade no necesitan acceder directamente a los objetos del sistema.

Consecuencias.

  • Oculta a los clientes de la complejidad del subsistema y lo hace fácil de usar.
    
  • Favorece un acoplamiento débil entre el subsistema y sus clientes, consiguiendo que los cambios de las clases del sistema sean transparentes a los clientes.
    
  • Facilita la división en capas y reduce dependencias de compilación.
    
  • No se impide el acceso a las clases del sistema.
    

link de la aplicacion Aplicacion