Patrón de fachada

format_list_bulleted Contenido keyboard_arrow_down
ImprimirCitar
Diseño de software

El patrón de fachada (también escrito fachada) es un patrón de diseño de software comúnmente utilizado en la programación orientada a objetos. De manera análoga a una fachada en arquitectura, una fachada es un objeto que sirve como una interfaz frontal que enmascara un código subyacente o estructural más complejo. Una fachada puede:

  • mejorar la legibilidad y usabilidad de una biblioteca de software enmascarando la interacción con componentes más complejos detrás de una API única (y a menudo simplificada)
  • proporcionar una interfaz específica de contexto a una funcionalidad más genérica (completa con validación de entrada específica de contexto)
  • servir como punto de lanzamiento para un refactor más amplio de sistemas monolíticos o ajustados a favor de un código más flexible

Los desarrolladores suelen utilizar el patrón de diseño de fachada cuando un sistema es muy complejo o difícil de entender porque el sistema tiene muchas clases interdependientes o porque su código fuente no está disponible. Este patrón oculta las complejidades del sistema más grande y proporciona una interfaz más sencilla para el cliente. Por lo general, implica una sola clase contenedora que contiene un conjunto de miembros requeridos por el cliente. Estos miembros acceden al sistema en nombre del cliente de fachada y ocultan los detalles de implementación.

Resumen

La fachada patrón de diseño es uno de los veintitrés bien conocidos Patrones de diseño de GoF 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 Facade?

  • Para facilitar el uso de un subsistema complejo, se debe proporcionar una interfaz sencilla para un conjunto de interfaces en el subsistema.
  • Debería minimizarse la dependencia de un subsistema.

Los clientes que acceden a un subsistema complejo se refieren directamente (dependen de) muchos objetos diferentes que tienen diferentes interfaces (acoplamiento estrecho), lo que hace que los clientes sean difíciles de implementar, cambiar, probar y reutilizar.

¿Qué solución describe el patrón de diseño Fachada?

Defina un objeto Fachada que

  • implementa una interfaz simple en términos de (delegando a) las interfaces en el subsistema y
  • puede realizar funciones adicionales antes/después de enviar una solicitud.

Esto permite trabajar a través de un objeto Facade para minimizar las dependencias en un subsistema.
Vea también la clase UML y el diagrama de secuencia a continuación.

Uso

Una Fachada se usa cuando se desea una interfaz más fácil o simple para un objeto subyacente. Alternativamente, se puede usar un adaptador cuando el contenedor debe respetar una interfaz particular y debe admitir un comportamiento polimórfico. Un decorador hace posible agregar o modificar el comportamiento de una interfaz en tiempo de ejecución.

PatrónIntent
AdaptadorConvierte una interfaz a otra para que coincida con lo que el cliente espera
DecoradorAgrega dinámicamente la responsabilidad a la interfaz envolviendo el código original
FacadeProporciona una interfaz simplificada

El patrón de fachada se usa típicamente cuando

  • una interfaz simple es necesaria para acceder a un sistema complejo,
  • un sistema es muy complejo o difícil de entender,
  • un punto de entrada es necesario para cada nivel de software de capa, o
  • las abstracciones e implementaciones de un subsistema se acoplan estrechamente.

Estructura

Clase UML y diagrama de secuencia

Facade Design Pattern Class Diagram
Facade Design Pattern Sequence Diagram
Un diagrama de clase y secuencia UML muestra para el patrón de diseño Facade.

En este diagrama de clases UML, la clase Client no accede directamente a las clases del subsistema. En cambio, Client funciona a través de una clase Facade que implementa una interfaz simple en términos de (delegando en) las clases del subsistema (Class1, Clase2 y Clase3). El Cliente depende únicamente de la sencilla interfaz Facade y es independiente del subsistema complejo.

El diagrama de secuencia muestra las interacciones en tiempo de ejecución: El objeto Client funciona a través de un objeto Facade que delega la solicitud a Class1, Class2 y Class3 instancias que realizan la solicitud.

Diagrama de clases UML

Example of Facade design pattern in UML.png

Facade
La clase de fachada abstracts Paquetes 1, 2, y 3 del resto de la aplicación.
Clientes
Los objetos están utilizando el Patrón Facade para acceder a los recursos de los Paquetes.

Ejemplo

Este es un ejemplo abstracto de cómo un cliente ("usted") interactúa con una fachada (la "computadora") de un sistema complejo (partes internas de la computadora, como CPU y disco duro).

C++

struct CPU {} vacío Quieto(); vacío Salto()largo posición); vacío Ejecutar();};struct HardDrive {} char* Leer()largo lba, int tamaño);};struct Memoria {} vacío Carga()largo posición, char* datos);};clase ComputerFacade {} público: vacío Comienzo() {} cpu_.Quieto(); memoria_.Carga()kBootAddress, hard_drive_.Leer()kBootSector, kSectorSize)); cpu_.Salto()kBootAddress); cpu_.Ejecutar(); } privado: CPU cpu_; Memoria memoria_; HardDrive hard_drive_;};int principal() {} ComputerFacade ordenador; ordenador.Comienzo();}

Contenido relacionado

AmigaDOS

Transporte en Pakistán

Vigilancia predictiva

La vigilancia predictiva o policía preventiva se refiere al uso de análisis matemáticos, predictivos y otras técnicas analíticas en la aplicación de la...
Más resultados...
Tamaño del texto:
undoredo
format_boldformat_italicformat_underlinedstrikethrough_ssuperscriptsubscriptlink
save