Aller au contenu

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();
}
}

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.