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

Introducción: Intermediario inteligente

Proxy controla el acceso a un objeto real. Puede añadir seguridad, caché, lazy loading o registro.

Proxy como guardia
Prompt: Security checkpoint with a gate and guard, modern minimal style.

1. Naturaleza: Guardia de entrada

Un nido protegido por un ave “guardia”. Solo deja pasar a quienes reconoce. El guardia es el proxy del nido.

Ave guardián
Prompt: Bird guarding nest at sunrise, nature documentary style.

2. Mundo Real: Tarjetas de acceso

Una tarjeta controla quién puede entrar a un edificio. La puerta no decide, el proxy (tarjeta) sí.

Tarjeta de acceso
Prompt: Access card near a modern door reader, corporate office lighting.

3. Implementación en C#: Código Paso a Paso

3.1 Interfaz común

public interface IImagen
{
    void Mostrar();
}

3.2 Objeto real

public class ImagenReal : IImagen
{
    private string _archivo;
    public ImagenReal(string archivo)
    {
        _archivo = archivo;
        CargarDesdeDisco();
    }

    private void CargarDesdeDisco()
    {
        Console.WriteLine($"Cargando {_archivo} desde disco...");
    }

    public void Mostrar()
    {
        Console.WriteLine($"Mostrando {_archivo}");
    }
}

3.3 Proxy con Lazy Loading

public class ImagenProxy : IImagen
{
    private string _archivo;
    private ImagenReal _real;

    public ImagenProxy(string archivo)
    {
        _archivo = archivo;
    }

    public void Mostrar()
    {
        if (_real == null)
            _real = new ImagenReal(_archivo); // carga diferida

        _real.Mostrar();
    }
}

3.4 Uso

IImagen imagen = new ImagenProxy("foto.png");
Console.WriteLine("Aún no se carga...");
imagen.Mostrar(); // ahora sí se carga

4. Proxy vs Decorator

Proxy controla acceso. Decorator añade funcionalidades. Ambos envuelven objetos, pero con intenciones distintas.

5. Diagrama UML

UML Proxy
Prompt: UML diagram of Proxy pattern, minimal vector layout.
Proxy controlando acceso
Prompt: Flow diagram showing access control via proxy, modern infographic.

⚠️ Cuándo NO Usar Proxy

  • Si no necesitas control de acceso ni carga diferida.
  • Si la capa extra añade latencia sin beneficio.

💪 Ejercicio

Crea un proxy que cachee respuestas de una API simulada.

Conclusión

Proxy añade control inteligente entre el cliente y el objeto real.