Outils pour utilisateurs

Outils du site


analyse:patterns:divers:ioc

Inversion de contrôle

Au lieu d'avoir une classe qui utilise directement une implémentation concrète, les classes utilisées ont une implémentation (utilisent une interface) et la classe qui utilise est liée à ces interfaces.

Par exemple, PasswordResetHelper peut utiliser les classes concrètes de MonEmailSender et MonLogWriter. Au lieu de ça, c'est le « consommateur » de PasswordResetHelper qui spécifiera quel EmailSender ou quel MonLogWriter utiliser.

public class PasswordResetHelper {
    private IEmailSender _emailSender;
    private ILogWriter _logWriter;
 
    // Constructor
    public PasswordResetHelper(IEmailSender emailSender, ILogWriter logWriter) {
        this._emailSender = emailSender;
        this._logWriter = logWriter;
    }
    // Le reste du code utilise _emailSender et _logWriter
}

Le constructeur demande les instances de IEmailSender et ILogWriter, qui seront gardés pour les utiliser plus tard dans le code.

Dans le monde .NET, on peut utiliser StructureMap à cet effet.

analyse/patterns/divers/ioc.txt · Dernière modification : 2022/02/02 00:42 de 127.0.0.1