stringtranslate.com

Patrón de fachada

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.

Descripción general

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 Facadeobjeto que

Esto permite trabajar con un Facadeobjeto para minimizar las dependencias de un subsistema.
Consulte también el diagrama de secuencia y clase UML que aparece a continuación.

Uso

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

Estructura

Diagrama de clases y secuencias UML

Un ejemplo de diagrama de clase y secuencia UML para el patrón de diseño Facade.

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]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, Class2y Class3que 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.

Ejemplo

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

C++

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 ( ) ; }     

Véase también

Referencias

  1. ^ Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides (1994). Patrones de diseño: elementos de software reutilizable orientado a objetos . Addison Wesley. pp. 185ff. ISBN 0-201-63361-2.{{cite book}}: CS1 maint: varios nombres: lista de autores ( enlace )
  2. ^ "El patrón de diseño Facade: problema, solución y aplicabilidad". w3sDesign.com . Consultado el 12 de agosto de 2017 .
  3. ^ Freeman, Eric; Freeman, Elisabeth; Sierra, Kathy; Bates, Bert (2004). Hendrickson, Mike; Loukides, Mike (eds.). Patrones de diseño Head First (libro de bolsillo) . Vol. 1. O'Reilly. págs. 243, 252, 258, 260. ISBN 978-0-596-00712-6. Recuperado el 2 de julio de 2012 .
  4. ^ "El patrón de diseño Facade - Estructura y colaboración". w3sDesign.com . Consultado el 12 de agosto de 2017 .

Enlaces externos