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(); }}Real-world usage example
Section titled “Real-world usage example”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.