Proxy
Contexte : Fournir un substitut ou un mandataire pour un autre objet afin d’en contrôler l’accès.
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(); }}Exemple d’utilisation dans le monde réel
Section intitulée « Exemple d’utilisation dans le monde réel »Chargement paresseux : Un proxy retarde la création d’un objet coûteux (par exemple, une grande image, une connexion base de données) jusqu’à ce qu’il soit réellement nécessaire.
Exemple : Entity Framework Core utilise les proxies de chargement paresseux pour les propriétés de navigation. Également, RealProxy pour la communication à distance (héritage) et les proxies dynamiques dans Castle DynamicProxy.