El método de fachada es un patrón de diseño estructural que proporciona una interfaz unificada más simple para un sistema más complejo. La palabra Fachada significa la cara de un edificio o, en particular, una interfaz exterior de un sistema complejo, que consta de varios subsistemas. Es una parte esencial de los patrones de diseño de Gang of Four . Proporciona una forma más fácil de acceder a los métodos de los sistemas subyacentes al proporcionar un único punto de entrada.
Aquí, creamos una capa de fachada que ayuda a comunicarse fácilmente con los subsistemas para los clientes.
![Facade-Method python design pattern](https://media.geeksforgeeks.org/wp-content/uploads/20200203095945/Facade-Method.png)
Fachada-Método
Problema sin usar el método de fachada
Imagine que tenemos una lavadora que puede lavar la ropa, enjuagar la ropa y centrifugar la ropa, pero todas las tareas por separado. Como todo el sistema es bastante complejo, necesitamos abstraer las complejidades de los subsistemas. Necesitamos un sistema que pueda automatizar toda la tarea sin que nos moleste o interfiera.
Solución usando el Método de la Fachada
Para solucionar el problema descrito anteriormente, nos gustaría contratar el Método Fachada. Nos ayudará a ocultar o abstraer las complejidades de los subsistemas de la siguiente manera.
El siguiente código está escrito usando el método Facade
Python3
"""Facade pattern with an example of WashingMachine""" class Washing: '''Subsystem # 1''' def wash(self): print("Washing...") class Rinsing: '''Subsystem # 2''' def rinse(self): print("Rinsing...") class Spinning: '''Subsystem # 3''' def spin(self): print("Spinning...") class WashingMachine: '''Facade''' def __init__(self): self.washing = Washing() self.rinsing = Rinsing() self.spinning = Spinning() def startWashing(self): self.washing.wash() self.rinsing.rinse() self.spinning.spin() """ main method """ if __name__ == "__main__": washingMachine = WashingMachine() washingMachine.startWashing()
Diagrama de clases para el método de fachada
El siguiente es el diagrama de clases para el Método Fachada:
![Facade-method-Class-Diagram](https://media.geeksforgeeks.org/wp-content/uploads/20200203104149/Facade-method-class-diagram.png)
Facade-método-Class-Diagram
Ventajas
- Aislamiento: podemos aislar fácilmente nuestro código de la complejidad de un subsistema.
- Proceso de prueba: el uso del método de fachada hace que el proceso de prueba sea relativamente fácil, ya que tiene métodos convenientes para tareas de prueba comunes.
- Loose Coupling: Disponibilidad de Loose Coupling entre los clientes y los Subsistemas.
Desventajas
- Cambios en los métodos: como sabemos, en el método Fachada , los métodos posteriores se adjuntan a la capa Fachada y cualquier cambio en el método posterior puede generar cambios en la capa Fachada que no son favorables.
- Proceso costoso: No es barato establecer el método Facade en nuestra aplicación para la confiabilidad del sistema.
- Violación de las reglas: Siempre existe el temor de violación de la construcción de la capa de fachada.
Aplicabilidad
- Proporcionar una interfaz simple: una de las aplicaciones más importantes del método de fachada es que se usa siempre que desee proporcionar una interfaz simple al subsistema complejo.
- División en capas: Se utiliza cuando queremos dar una estructura única a un subsistema dividiéndolo en capas. También conduce a un acoplamiento flojo entre los clientes y el subsistema.
Lectura adicional: método de fachada en Java
Publicación traducida automáticamente
Artículo escrito por chaudhary_19 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA