Inversion de dépendance (DIP) : DIP est une idée de conception. Dans la conception de logiciels traditionnels, le code de la couche supérieure dépend de la couche inférieure. Lorsque le code de la couche inférieure change, le code de la couche supérieure change également. Le code n'est pas facile. à maintenir et conception DIP L'idée nécessite de définir l'interface de la couche supérieure et la couche inférieure implémentant cette interface, réduisant ainsi le degré de couplage.
Inversion de contrôle (IOC) : IOC est une idée spécifique deDIP, qui laisse la couche inférieure dont dépend la couche supérieure être mise en œuvre par un tiers. En d'autres termes, il s'agit de l'initiative d'obtenir la ressource externe C requise dans la catégorie A. Cette situation est mise en avant. Alors, qu’est-ce que l’inverse ? Autrement dit, la classe A n'obtient plus activement C, mais attend passivement que le conteneur IoC/DI obtienne une instance de C, puis l'injecte dans la classe A à l'envers.
Injection de dépendance (DI) : DI est un modèle de conception d'IOC qui déplace l'instanciation d'une classe qui dépend d'une autre classe vers l'implémentation externe de la classe.
L'injection de dépendances est implémentée :
1. Définir une interface ou une classe abstraite (c'est un exemple d'envoi d'emails)
interface Mail{ public function send(); }
2. Différents types d'envoi mettent en œuvre cette interface
class Email implements Mail() { public function send() { //发送Email } }
class SmsMail implements Mail() { public function send() { //发送短信 } }
3.
__construct( ->_mailObj = ->_mailObj->send();
<span style="color: #008000"><br/>$reg = new Register();<br/>$emailObj = new Email();<br/>$smsObj = new SmsMail();<br/><br/>$reg->doRegister($emailObj);//使用email发送<br/>$reg->doRegister($smsObj);//使用短信发送<br/></span>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!