El patrón de fachada (también escrito fachada ) es un patrón de diseño de software que se utiliza comúnmente en la programación orientada a objetos . De manera análoga a una fachada en arquitectura, es un objeto que sirve como interfaz frontal que enmascara un código estructural o subyacente más complejo. Una fachada puede:
Los desarrolladores suelen utilizar el patrón de diseño de fachada cuando un sistema es muy complejo o difícil de entender porque 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 simple 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.
El patrón de diseño Facade [1] es uno de los veintitrés patrones de diseño GoF 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 Facade? [2]
Los clientes que acceden a un subsistema complejo se refieren directamente a (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 Facade?
Definir un Facade
objeto que
Esto permite trabajar con un Facade
objeto para minimizar las dependencias de un subsistema.
Consulte también el diagrama de secuencia y clase UML que aparece a continuación.
Se utiliza una fachada cuando se desea una interfaz más sencilla o más fácil para un objeto subyacente. [3] Alternativamente, se puede utilizar un adaptador cuando el contenedor debe respetar una interfaz particular y debe admitir un comportamiento polimórfico . Un decorador permite agregar o alterar el comportamiento de una interfaz en tiempo de ejecución.
El patrón de fachada se utiliza normalmente cuando
En este diagrama de clases UML , la clase no accede directamente a las clases del subsistema. En cambio, la clase trabaja a través de una clase que implementa una interfaz simple en términos de (al delegar a) las clases del subsistema ( , , y ). La clase depende únicamente de la interfaz simple y es independiente del subsistema complejo. [4]Client
Client
Facade
Class1
Class2
Class3
Client
Facade
El diagrama de secuencia muestra las interacciones en tiempo de ejecución: el Client
objeto funciona a través de un Facade
objeto que delega la solicitud a las instancias Class1
, Class2
y Class3
que realizan la solicitud.
Este es un ejemplo abstracto de cómo un cliente ("usted") interactúa con una fachada (la "computadora") hacia un sistema complejo (partes internas de la computadora, como la CPU y el disco duro).
struct CPU { void Congelar (); void Saltar ( posición larga ); void Ejecutar (); }; struct HardDrive { char * Read ( long lba , int tamaño ); }; estructura Memoria { void Cargar ( long posición , char * datos ); }; clase ComputerFacade { público : void Inicio ( ) { cpu_.Congelar ( ) ; memoria_.Cargar ( kBootAddress , disco_duro_.Leer ( kBootSector , kSectorSize ) ) ; cpu_.Saltar ( kBootAddress ) ; cpu_.Ejecutar ( ) ; } privado : CPU cpu_ ; Memoria memoria_ ; Disco duro disco_duro_ ; }; int main () { ComputerFacade computadora ; computadora.Inicio ( ) ; }
{{cite book}}
: CS1 maint: varios nombres: lista de autores ( enlace )