Articulo de referencia

Patrón de fachada

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 arq...

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:

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

Diagrama de clases de patrones de diseño de fachadas
Diagrama de secuencia de patrones de diseño de fachadas
Un ejemplo de diagrama de clases y secuencia UML para el patrón de diseño de fachada.

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

  1. 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.
  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 .
  3. 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.
  4. "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 .
  • Descripción del repositorio de patrones de Portland