Design Pattern Facade: definición y ejemplo de implementación
Emanuelly Leoncio. Los Patrones de diseño (o design patterns) son herramientas útiles para sistemas orientados a objetos. Su aplicación tiene como objetivo reutilizar soluciones de software estandarizadas en problemas rutinarios.
Uno de los 23 patrones documentados en el libro Design Patterns: Elements of Reusable Object-Oriented Software es el Patrón de Proyecto Facade. En este artículo detallaremos más al respecto.
Facade
Facade es uno de los patrones de diseño más populares. Como sugiere el nombre, se trata de una “fachada”, en la que se creará un objeto para facilitar el uso de un sistema complejo. El Facade es un patrón de tipo estructural, es decir, se utiliza para crear otras estructuras a partir del mismo. Así, permite organizar las clases y objetos del sistema de forma estructurada.
A pesar de que Facade tiene la encapsulación como característica, no se fija solo en una clase, que es lo más común. Puede abstraer completamente la complejidad de un módulo, creando una interfaz de uso más simplificada.
Visión estructural de Facade
Facade accede a una parte específica del sistema, según la solicitud del cliente. Los subsistemas están "ocultos" y nos proporciona una interfaz más sencilla de manejar. El módulo Cliente interactúa sólo con el método Facade, no es necesario conocer las interacciones que se llevan a cabo “bajo el capó”.
Ejemplo de uso
Supongamos que estamos desarrollando un sistema de entrega de productos petshop en línea. El flujo desde la elección hasta la recepción del producto se realiza a través de:
- Inicio de la venta;
- Procesamiento del carrito de compras;
- Actualización del stock de la tienda;
- Preparación del envío de los productos;
- Envío de los productos para el cliente.
Así, disponemos de 5 servicios diferentes que se realizan en un completo proceso de compra. El cliente está vinculado a todos estos microservicios, lo que aumenta la complejidad del sistema.
De esta forma, la fachada se aplica como solución para abstraer nuestro sistema y hacerlo más flexible.
Aplicación
La implementación de Facade para nuestro sistema de delivery de productos de petshop considera el siguiente código:
Subsistemas.php
Facade.php
Conclusión
Facade es un patrón de diseño simple de implementar. Debido a su estructura organizada, es fácil comprender las funcionalidades del sistema en cuestión.
Otra ventaja es la flexibilidad en relación a los cambios. Si es necesario cambiar algún subsistema, solo se modifica una clase.
Listopro Community da la bienvenida a todas las razas, etnias, nacionalidades, credos, géneros, orientaciones, puntos de vista e ideologías, siempre y cuando promuevan la diversidad, la equidad, la inclusión y el crecimiento profesional de los profesionales en tecnología.