Introducción: Intermediario inteligente
Proxy controla el acceso a un objeto real. Puede añadir seguridad, caché, lazy loading o registro.
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.
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í.
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
Prompt: UML diagram of Proxy pattern, minimal vector layout.
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.