Heim  >  Artikel  >  Backend-Entwicklung  >  Was ist Abhängigkeitsinjektion?

Was ist Abhängigkeitsinjektion?

一个新手
一个新手Original
2017-10-25 13:16:573707Durchsuche

Abhängigkeitsinversion (DIP): DIP ist eine Designidee, bei der der Code der oberen Ebene von der unteren Ebene abhängt Die Idee des DIP-Designs erfordert die Definition der Schnittstelle der oberen Schicht und die Implementierung dieser Schnittstelle in der unteren Schicht, wodurch der Kopplungsgrad verringert wird.

Inversion of Control (IOC): IOC ist eine spezifische Idee von DIP, bei der die untere Schicht, von der die obere Schicht abhängt, von einem Dritten implementiert wird. Mit anderen Worten handelt es sich um die Initiative, die erforderliche externe Ressource C in Kategorie A zu erhalten. Diese Situation wird als vorwärts bezeichnet. Was ist also umgekehrt? Das heißt, Klasse A erhält C nicht mehr aktiv, sondern wartet passiv darauf, dass der IoC/DI-Container eine Instanz von C erhält, und fügt sie dann umgekehrt in Klasse A ein.

Abhängigkeitsinjektion (DI): DI ist ein Entwurfsmuster von IOC, das die Instanziierung einer Klasse, die von einer anderen Klasse abhängt, in die externe Implementierung der Klasse verschiebt.

Abhängigkeitsinjektion ist implementiert:

1. Definieren Sie eine Schnittstelle oder abstrakte Klasse (dies ist ein Beispiel für das Senden von E-Mails)


interface Mail{    public function send();
}

2. Verschiedene Versandarten implementieren diese Schnittstelle


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>

Das obige ist der detaillierte Inhalt vonWas ist Abhängigkeitsinjektion?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn