El patrón fachada es un patrón de diseño estructural que proporciona una interfaz simplificada para una biblioteca, u otro conjunto complejo de clases.
¿Qué problema resuelve el patrón fachada?
Un problema, común, resuelto por el patrón fachada es el relacionado con la integración con bibliotecas de terceros.
Por ejemplo, si necesitas que tu código funcione con un conjunto de objetos que pertenecen a un framework sofisticado y necesitas inicializar todos esos objetos, realizar un seguimiento de las dependencias, ejecutar métodos en el orden correcto, etc, etc..la lógica de negocio de tus clases estaría estrechamente vinculada a los detalles de implementación de las clases de terceros. Esto dificultaría el mantenimiento.
El patrón fachada quiere resolver este problema. En este contexto, una fachada es una clase que proporciona una interfaz simple a un subsistema complejo que contiene muchas partes móviles. Una fachada incluye solamente aquellas funciones que interesan al cliente.
Por tanto, tener una fachada puede ser útil si necesitas integrar tu aplicación con una biblioteca que tiene un sinfín de funciones, pero solo necesitas un poco de su funcionalidad. Cosas de APIs…
¿Cuándo usar el patrón Fachada (Facade)?
Podrías utilizar el patrón fachada si necesitas tener una interfaz limitada, pero sencilla para un subsistema complejo. Los subsistemas se vuelven complejos con el tiempo. Este patrón intenta solucionar este problema al proporcionar un acceso directo a las funciones más utilizadas del subsistema.
También podrías utilizar nuestro patrón de hoy cuando quieras estructurar un subsistema en capas. Puedes crear fachadas para definir puntos de entrada a cada nivel de un subsistema. Si quieres reducir el acoplamiento entre múltiples subsistemas, puedes requerir que se comuniquen solo a través de fachadas.
Pros y contras del patrón fachada
Los siguientes son algunos de los “pros y cons” de este patrón:
“Show me the code”
Para que tengas una idea de cómo se ve el patrón Fachada en acción, puedes ver el ejemplo en PHP de refactoring.guru.
En el ejemplo verás como el patrón Fachada oculta la complejidad de la API de Youtube y la biblioteca FFmpeg del código del cliente.
¿Utilizas el patrón Facade en tus proyectos? ¿Qué tal la experiencia? ¡Coméntalo abajo!
Fuente: