FACADE
El patrón fachada es uno de los 23 design patterns de los GoF, que fueron publicados en
1994 por los autores Erich Gamma, Ralph Johnson, Richard Helm y John Vlissides en
“Patrones de diseño: elementos de software orientado a objetos reutilizable” como guía
para los desarrolladores de software. En general, estos patrones tienen como objetivo
simplificar la creación de software flexibles y reutilizables. El patrón fachada define una
solución modelo para una fusión simple de diferentes interfaces en sistemas complejos.
Una clase de fachada universal, que también funciona como interfaz, delega importantes
funcionalidades del software a los respectivos subsistemas para que el manejo de los
diversos subcomponentes de un programa sea lo más sencillo posible.
Fachada es un tipo de patrón de diseño estructural. Viene motivado por la necesidad de
estructurar un entorno de programación y reducir su complejidad con la división en
subsistemas, minimizando las comunicaciones y dependencias entre estos.
El cometido del patrón Facade es hacer de intermediario (de fachada) entre los
consumidores y distintos sistemas. En lugar de que el consumidor tenga que hablar con 2 o
3 sistemas para hacer una acción, habla con la fachada y ésta ya se encargará de hablar con
los sistemas.
Propósito
Simplificar el acceso a un conjunto de objetos proporcionando uno que todos los clientes
puedan usar para comunicarse con el conjunto
Proporciona una interfaz simplificada a una biblioteca, un framework o cualquier otro
grupo complejo de clases.
Minimizar las comunicaciones y dependencias entre subsistemas
Aplicabilidad
Se aplica para proporcionar una interfaz sencilla a un subsistema complejo
- A medida que un subsistema evoluciona va teniendo más clases,
más pequeñas, más flexibles y configurables
- Hay clientes que no necesitan tanta flexibilidad y que quieren
una visión más simple del subsistema
- Sólo los clientes que necesiten detalles de más bajo nivel
accederán a las clases detrás de la fachada
Cuando hay muchas dependencias entre los clientes y las clases de implementación de una
abstracción
- La fachada desacopla el subsistema de los clientes y de otros
Subsistemas
- Esto mejora la independencia de subsistemas y la portabilidad
Para estructurar un sistema en capas
- La fachada define el punto de entrada de cada nivel
- Se pueden simplificar las dependencias obligando a los subsistemas a comunicarse
únicamente a través de sus fachadas