Facade
El patrón Facade es un patrón de diseño estructural que proporciona una interfaz unificada y simplificada a un conjunto de interfaces más complejas de un subsistema. Esto permite a los clientes interactuar con el sistema de una manera más fácil y comprensible, sin necesidad de conocer los detalles de implementación del subsistema.
Un ejemplo común del patrón Facade es el uso de una interfaz de usuario (UI) en una aplicación web. La UI puede ser una fachada que proporciona una interfaz simplificada para interactuar con un conjunto complejo de servicios, como autenticación, almacenamiento de datos y procesamiento de datos. En lugar de que los clientes interactúen directamente con cada uno de estos servicios de forma individual, pueden interactuar con la UI, que se encarga de coordinar las solicitudes y manejar la comunicación con los servicios subyacentes.
Aquí tienes un ejemplo más concreto en TypeScript que ilustra cómo implementar el patrón Facade:
typescriptCopy code// Subsistema 1
class Authentication {
login(username: string, password: string): boolean {
// Lógica de autenticación
return true; // Supongamos que la autenticación siempre es exitosa para este ejemplo
}
logout(): void {
// Lógica de cierre de sesión
}
}
// Subsistema 2
class DataStorage {
saveData(data: any): void {
// Lógica para guardar datos
}
getData(): any {
// Lógica para obtener datos
return null;
}
}
// Facade
class SystemFacade {
private authentication: Authentication;
private dataStorage: DataStorage;
constructor() {
this.authentication = new Authentication();
this.dataStorage = new DataStorage();
}
// Métodos simplificados para el cliente
login(username: string, password: string): void {
if (this.authentication.login(username, password)) {
console.log('Login successful');
} else {
console.log('Login failed');
}
}
logout(): void {
this.authentication.logout();
console.log('Logout successful');
}
saveData(data: any): void {
this.dataStorage.saveData(data);
console.log('Data saved successfully');
}
getData(): any {
const data = this.dataStorage.getData();
console.log('Data retrieved successfully');
return data;
}
}
// Uso
const facade = new SystemFacade();
facade.login('user123', 'password123');
facade.saveData({ id: 1, name: 'John Doe' });
const data = facade.getData();
facade.logout();
En este ejemplo, SystemFacade
actúa como una fachada que proporciona una interfaz simplificada para interactuar con los subsistemas de autenticación y almacenamiento de datos. Los clientes pueden utilizar los métodos proporcionados por SystemFacade
para realizar acciones como iniciar sesión, guardar datos y recuperar datos, sin necesidad de conocer los detalles de implementación de los subsistemas subyacentes. Esto simplifica la interacción con el sistema y oculta la complejidad interna del mismo.
Last updated