Introducción: Una puerta sencilla
Facade ofrece una interfaz simple para un sistema complejo. El cliente no necesita conocer los detalles internos de varios subsistemas.
Prompt: Minimalist modern building facade, clean lines, architectural photography.
1. Naturaleza: La piel como interfaz
La piel protege órganos complejos. Tú interactúas con una interfaz simple (la piel) sin conocer lo que pasa dentro.
Prompt: Macro skin texture, soft light, biological illustration style.
2. Mundo Real: Cine en casa
Para ver una película necesitas: TV, sonido, reproductor, luces. Un botón "Modo Cine" ejecuta múltiples acciones internas.
Prompt: Cozy home theater with dim lights, projector, surround speakers, cinematic ambiance.
3. Implementación en C#: Código Paso a Paso
3.1 Subsistemas
public class TV { public void Encender() => Console.WriteLine("TV ON"); }
public class Sonido { public void Activar() => Console.WriteLine("Surround ON"); }
public class Reproductor { public void Reproducir(string p) => Console.WriteLine($"Play {p}"); }
public class Luces { public void Atenuar() => Console.WriteLine("Luces 20%"); }
3.2 Facade
public class CineEnCasaFacade
{
private TV _tv; private Sonido _sonido; private Reproductor _rep; private Luces _luces;
public CineEnCasaFacade(TV tv, Sonido sonido, Reproductor rep, Luces luces)
{ _tv = tv; _sonido = sonido; _rep = rep; _luces = luces; }
public void IniciarPelicula(string pelicula)
{
_luces.Atenuar();
_tv.Encender();
_sonido.Activar();
_rep.Reproducir(pelicula);
}
}
3.3 Uso
var facade = new CineEnCasaFacade(new TV(), new Sonido(), new Reproductor(), new Luces());
facade.IniciarPelicula("Interstellar");
4. Facade vs Adapter
Facade simplifica un sistema. Adapter traduce interfaces incompatibles. Si quieres una puerta sencilla, usa Facade.
5. Diagrama UML
Prompt: UML diagram of Facade pattern, clean vector, soft blue accents.
Prompt: Abstract modules behind a single interface icon, modern infographic style.
⚠️ Cuándo NO Usar Facade
- Si el sistema es pequeño y simple.
- Si necesitas acceso completo a los subsistemas en todas partes.
💪 Ejercicio
Crea una fachada para un sistema de facturación: Factura, Impuestos, EnvioEmail.
Conclusión
Facade convierte un conjunto complejo de piezas en un botón simple y usable.