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