Skip to content

Proxy

Context: Provide a surrogate or placeholder for another object to control access to it.

public interface ISubject
{
void Request();
}
public class RealSubject : ISubject
{
public void Request() => Console.WriteLine("RealSubject request");
}
public class Proxy : ISubject
{
private RealSubject _realSubject;
public void Request()
{
if (_realSubject == null)
_realSubject = new RealSubject();
// Add access control, logging, etc.
_realSubject.Request();
}
}

Lazy loading: A proxy delays creation of an expensive object (e.g., large image, database connection) until it’s actually needed.

Example: Entity Framework Core uses lazy loading proxies for navigation properties. Also, RealProxy for remoting (legacy) and dynamic proxies in Castle DynamicProxy.