Modelul de injectare de dependență și utilitatea sa

Modelul de injectare dependență a fost întotdeauna unul dintre conceptele pe care îl costă pentru a înțelege în lumea dezvoltării de software, în special pentru oamenii care încep. Ce este acest model de design pentru care este utilizarea dvs.? În mod normal, atunci când programați în fiecare zi cu programare orientată pe obiecte găsim o clădire a obiectelor și a obiectelor care se referă la dependențe.

Obiecte Injecție de dependență

Injectarea de dependență a obiectelor

De exemplu, putem avea un program principal care utilizează un serviciu simplu de imprimare pentru a imprima un document.

<

package com.arquitecturajava;public class ServicioImpresion {public void imprimir() {System.out.println(„enviando el documento a imprimir”);System.out.println(„imprimiendo el documento en formato pdf”);}}

Folosim un program principal de program:

package com.arquitecturajava;public class Principal {public static void main(String args) {ServicioImpresion miServicio= new ServicioImpresion();miServicio.imprimir();}}

sus nu are nimic special și vom vedea Rezultatul tipărit pe consola:

Nici o injecție de dependență

nici o injecție de dependență

Injecție de dependență

Totuși, chestia logică este că acest program își împarte responsabilitățile mai mult și acest compus al mai multor servicii ceva de genul următor:

Injectarea dependenței Encia

Injectarea dependențelor

Până în prezent totul este destul de rezonabil și ceea ce ajungem este că serviciul nostru de tipărire depinde de alte servicii și responsabilități sunt mai clare. Tocmai am generat dependențele serviciului de tipărire. Codul ar fi ceva de genul următorului.

iv Id = „6FE0334FD0”

public class ServicioEnvio {public void enviar() {System.out.println("enviando el documento a imprimir");}}

iv id = „C34978A541”

Rezultatul în consola va fi același numai pe care l-am împărțit mai bine.

Dependența de injecție Rezultat

Aceeași operație poate fi efectuată prin injectarea dependențelor de service și care nu este cel care trebuie să le definească în constructor.

Constructori de dependență de injecție

Constructorii de dependență de injecție

Acest lucru pare Principiu O schimbare neimportantă, codul ar fi:

package com.arquitecturajava.parte3;public class ServicioImpresion {ServicioEnvio servicioA;ServicioPDF servicioB;public ServicioImpresion(ServicioEnvio servicioA,ServicioPDF servicioB) {this.servicioA= servicioA;this.servicioB= servicioB;}public void imprimir() {servicioA.enviar();servicioB.pdf();}}

iv id = „667EC1025E”

Rezultatul este încă același. Tocmai am injectat dependențele din serviciul din programul nostru principal. Ce avantaje contribuie acest lucru? . Realitatea este că, în principiu, se pare că nici unul. Dar există ceva care sa schimbat nu mai este serviciul însuși responsabil pentru definirea dependențelor sale, dar este programul principal. Aceasta deschide ușile la extensibilitate. Adică, întotdeauna trebuie să injectăm aceleași dependențe în serviciu?. Răspunsul pare evident … desigur că sunt deja definite. Cu toate acestea, răspunsul nu este, putem schimba tipul de dependență pe care o injectăm, pur și simplu extinderea uneia dintre clasele noastre și schimbarea comportamentului, să vedem.

DIV id = „6A4E71BD46″>

Tocmai am creat o clasă care extinde Serviceenvius și adaugă o funcționalitate a jurnalului suplimentar care face un „jurnal” al e-mailului pe care îl trimitem. Acum este la fel de simplu ca și programul principal că atunci când injectarea dependenței nu injectează formularul Serviceenvi Noi va fi schimbat comportamentul considerabil Dependența

Injectarea dependenței

Am modificat semnificativ comportamentul programului nostru datorită utilizării conceptului Injectarea dependenței.

Dependența de injecție a patrimoniului

Dependența de injecție a patrimoniului

Injectarea de dependență ne permite să injectăm alte clase și să adăugăm funcționalități transversale personalizate. Acest model de design este cel care deschide ușa cadrelor ca primăvară utilizând conceptul de injecție de dependență într-un mod mai avansat. În acest cadru, aspectele care sunt adăugate claselor noastre sunt multiple și foarte complexitate.

Aspecte de dependență de injecție

Aspecte de injectare a cheltuielilor

Importanța modelului de injecție de dependență este astăzi în majoritatea cadrelor.

Alte articole similare

  1. Primăvară @qualifier utilizând @autwired
  2. Spring @import, organizarea cadrului de primăvară
  3. Java 8 model de fabrică și implementarea sa
elemente externe
  1. injecție de dependență

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *