El patrón de fachada (también escrito como façade ) es un patrón de diseño de software comúnmente utilizado en la programación orientada a objetos . Análogo a una fachada en arquitectura, es un objeto que sirve como interfaz frontal, ocultando un código subyacente o estructural más complejo. Una fachada puede:
- Mejorar la legibilidad y la usabilidad de una biblioteca de software ocultando la interacción con componentes más complejos tras una única interfaz de programación de aplicaciones (API) (a menudo simplificada).
- Proporcionar una interfaz específica del contexto para una funcionalidad más genérica (con validación de entrada específica del contexto ).
- servir como punto de partida para una refactorización más amplia de sistemas monolíticos o fuertemente acoplados a favor de un código menos acoplado.
Los desarrolladores suelen utilizar el patrón de diseño Fachada cuando un sistema es muy complejo o difícil de comprender debido a la gran cantidad de clases interdependientes o a la falta de acceso a su código fuente. Este patrón oculta la complejidad del sistema y proporciona una interfaz más sencilla al cliente. Generalmente, consiste en una única clase contenedora que incluye un conjunto de miembros necesarios para el cliente. Estos miembros acceden al sistema en nombre del cliente de la fachada y ocultan los detalles de implementación.
Descripción general
El patrón de diseño Fachada [ 1 ] es uno de los veintitrés patrones de diseño GoF bien conocidos que describen cómo resolver problemas de diseño recurrentes para diseñar software orientado a objetos flexible y reutilizable, es decir, objetos que son más fáciles de implementar, cambiar, probar y reutilizar.
¿Qué problemas puede resolver el patrón de diseño Fachada? [ 2 ]
- Para facilitar el uso de un subsistema complejo, se debe proporcionar una interfaz sencilla para un conjunto de interfaces dentro del subsistema.
- Se deben minimizar las dependencias de un subsistema.
Los clientes que acceden directamente a un subsistema complejo hacen referencia a (dependen de) muchos objetos diferentes que tienen interfaces diferentes (acoplamiento estrecho), lo que dificulta la implementación, modificación, prueba y reutilización de los clientes.
¿Qué solución describe el patrón de diseño Fachada?
Defina un Facadeobjeto que
- implementa una interfaz simple en términos de (delegando a) las interfaces en el subsistema y
- puede realizar funciones adicionales antes o después de reenviar una solicitud.
Esto permite trabajar a través de un Facadeobjeto para minimizar las dependencias de un subsistema. Véase también el diagrama de clases y secuencia UML a continuación.
Uso
Se utiliza una fachada cuando se desea una interfaz más sencilla para un objeto subyacente. [ 3 ] Alternativamente, se puede usar un adaptador cuando el contenedor debe respetar una interfaz particular y debe admitir un comportamiento polimórfico . Un decorador permite agregar o modificar el comportamiento de una interfaz en tiempo de ejecución.
El patrón de la fachada se utiliza normalmente cuando
- Se requiere una interfaz simple para acceder a un sistema complejo,
- un sistema es muy complejo o difícil de entender,
- Se necesita un punto de entrada a cada nivel de software en capas, o
- Las abstracciones y las implementaciones de un subsistema están estrechamente acopladas.
Un buen ejemplo de dónde se utiliza una fachada es en valores indexados de registros como Modbus , I2C o registros de funciones especiales .
Estructura
Diagrama de clases y secuencia UML
En este diagrama de clases UML , la clase no accede directamente a las clases del subsistema. En cambio, funciona a través de una clase que implementa una interfaz simple en términos de (delegando a) las clases del subsistema ( , , y ). Depende únicamente de la interfaz simple y es independiente del subsistema complejo. [ 4 ]ClientClientFacadeClass1Class2Class3ClientFacade
El diagrama de secuencia muestra las interacciones en tiempo de ejecución: El Clientobjeto funciona a través de un Facadeobjeto que delega la solicitud a las instancias Class1, Class2, y Class3 que realizan la solicitud.
Diagrama de clases UML

- Fachada
- La clase de fachada abstrae los paquetes 1, 2 y 3 del resto de la aplicación.
- Clientela
- Los objetos utilizan el patrón de fachada para acceder a los recursos de los paquetes.
Véase también
Referencias
- ↑ Gamma, Erich; Helm, Richard; Johnson, Ralph; Vlissides, John (1994). Patrones de diseño: Elementos de software orientado a objetos reutilizable . Addison Wesley. pp. 185 y ss . ISBN 0-201-63361-2.
- ↑ "El patrón de diseño Fachada: problema, solución y aplicabilidad" . w3sDesign.com . Archivado del original el 12 de junio de 2020. Consultado el 12 de agosto de 2017 .
- ↑ Freeman, Eric; Freeman, Elisabeth; Sierra, Kathy; Bates, Bert (2004). Hendrickson, Mike; Loukides, Mike (eds.). Head First Design Patterns . Vol. 1. O'Reilly. pp. 243, 252, 258, 260. ISBN 978-0-596-00712-6.
- ↑ "El patrón de diseño Fachada - Estructura y Colaboración" . w3sDesign.com . Archivado del original el 12 de junio de 2020. Consultado el 12 de agosto de 2017 .
Enlaces externos
- Descripción del repositorio de patrones de Portland
- patrones de diseño de software