Patrón Facade en C#: Guía Completa con Ejemplos

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.

Fachada minimalista
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.

Piel humana como interfaz
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.

Home theater
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

UML Facade
Prompt: UML diagram of Facade pattern, clean vector, soft blue accents.
Subsistemas detrás de una interfaz
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.