En hurtig intro til Afhængighed Injektion: hvad det er, og hvornår du skal bruge det

ved Bhavya Karia

Indledning

I software engineering, dependency injection er en teknik, hvor et objekt (eller statiske metoder) leverer afhængighed af et andet objekt. En afhængighed er et objekt, der kan bruges (en tjeneste).

det er definitionikipedia-definitionen, men stadig, men det er ikke særlig let at forstå. Så lad os forstå det bedre.,

før vi forstår, hvad det betyder i programmeringen, lad os først se, hvad det betyder generelt, da det vil hjælpe os med at forstå konceptet bedre.

afhængighed eller afhængig betyder at stole på noget til støtte. Som hvis jeg siger, at vi stoler for meget på mobiltelefoner, end det betyder, at vi er afhængige af dem.

så før vi kommer til afhængighedsinjektioner, lad os først forstå, hvad en afhængighed i programmering betyder.

Når klasse A bruger nogle funktioner i klasse B, Så sagde det, at Klasse A har en afhængighed af klasse B.,

, der Viser afhængigheder mellem klasser

I Java, før vi kan bruge metoder i andre klasser, vi først nødt til at oprette objektet for denne klasse (dvs klasse Et behov for at skabe en instans af klasse B).

så overførsel af opgaven med at oprette objektet til en anden og direkte ved hjælp af afhængigheden kaldes afhængighedsinjektion.

hvad hvis kode kunne tale?

Hvorfor skal jeg bruge dependency injection?,

lad os sige, at vi har en bilklasse, der indeholder forskellige genstande som hjul, motor osv.

Her er bilklassen ansvarlig for at oprette alle afhængighedsobjekter. Nu, hvad nu hvis vi beslutter at droppe Mrfwhheels i fremtiden og ønsker at bruge Yokohama hjul?

Vi bliver nødt til at genskabe bilobjektet med en ny Yokohama-afhængighed. Men når vi bruger dependency injection (DI), kan vi ændre hjulene ved runtime (fordi afhængigheder kan injiceres ved runtime snarere end på kompileringstid).,

Du kan tænke på DI som mellemmand i vores kode, der gør alt arbejdet med at skabe det foretrukne hjulobjekt og give det til bilklassen.

det gør vores bilklasse uafhængig af at skabe objekter af hjul, batteri osv.

der er grundlæggende tre typer afhængighedsinjektion:

  1. konstruktørinjektion: afhængighederne leveres gennem en klassekonstruktør.
  2. setter injection: klienten udsætter en setter-metode, som injektoren bruger til at injicere afhængigheden.,interface injection: afhængigheden giver en injektormetode, der vil injicere afhængigheden i enhver klient, der overføres til den. Klienter skal implementere en grænseflade, der udsætter en setter-metode, der accepterer afhængigheden.

Så nu sin afhængighed injektion ansvar at:

  1. Opret objekter
  2. Vide, hvilke klasser, der kræver, at dem, genstande
  3. Og give dem alle de genstande

Hvis der er nogen ændring i objekter, så DI ser ind i det, og det bør ikke vedrører klassen ved hjælp af disse objekter., På denne måde, hvis objekterne ændrer sig i fremtiden, så er det DI ‘ S ansvar at give de relevante objekter til klassen.

Inversion of control —konceptet bag DI

Dette siger, at en klasse ikke skal konfigurere sine afhængigheder statisk, men skal konfigureres af en anden klasse udefra.

Det er det femte princip af S. O. L. I. D — de fem grundlæggende principper for objektorienteret programmering og design af Onkel Bob, som kræver, at en klasse bør afhænge af abstraktion og ikke på konkretioner (i enkle vendinger, hard-kodet).,

i henhold til principperne skal en klasse koncentrere sig om at opfylde sit ansvar og ikke om at skabe objekter, som den kræver for at opfylde dette ansvar. Og det er her afhængighedsinjektion kommer i spil: det giver klassen de nødvendige objekter.Bemærk: Hvis du vil lære om solide principper af Onkel Bob, kan du gå til dette link.

fordele ved at bruge DI

  1. hjælper med enhedstest.
  2. Kedelpladekode reduceres, da initialisering af afhængigheder udføres af injektorkomponenten.,
  3. udvidelse af applikationen bliver lettere.
  4. hjælper med at aktivere løs kobling, hvilket er vigtigt i applikationsprogrammering.

ulemper ved DI

  1. det er lidt komplekst at lære, og hvis overbrugt kan føre til ledelsesproblemer og andre problemer.
  2. mange kompileringstidsfejl skubbes til køretid.
  3. Afhængighedsindsprøjtningsrammer implementeres med refleksion eller dynamisk programmering. Dette kan hindre brugen af IDE-automatisering, såsom “find referencer”, “Vis opkaldshierarki” og sikker refactoring.,

Du kan implementere afhængighedsinjektion på egen hånd (ren vanilje) eller bruge tredjepartsbiblioteker eller rammer.

Biblioteker og Rammer at gennemføre DI

  • Forår (Java)
  • Google Guice (Java)
  • Dolk (Java og Android)
  • Castle Windsor (.NETTO)
  • Enhed(.,NETTO)

for At lære mere om afhængighed injektion, kan du tjekke nedenstående ressourcer:

Java-Dependency Injection — DI Design Mønster Eksempel Tutorial — JournalDev

ved Hjælp af dependency injection i Java — Introduktion — Tutorial — Vogella

Inversion of Control Containers, og Dependency Injection pattern — Martin Fowler

Håber det hjælper!

Hvis du kunne lide artiklen og vil læse flere fantastiske artikler, så følg mig her (Bhavya Karia) og vis din støtte, da det motiverer mig til at skrive mere.,

Hvis du har spørgsmål eller feedback til mig, end lad os oprette forbindelse på LinkedIn , t .itter, Facebook.

Rediger 1:

takket være Sergey Ufocoder nu er denne artikel blevet konverteret til det russiske sprog. Mine russiske venner, og som alle kan læse det russiske sprog, giver det en læsning.

Link til artiklen

også, hvis du vil anvende DI i JavaScript og leder efter et bibliotek, foreslår Jo Surikat, at du prøver hans bibliotek.

Di-Ninja

et mere fantastisk DI-bibliotek i JavaScript blev foreslået af Nicolas Froidure.,

knifecycle

Rediger 2:

Hvis du er en PHP-udvikler, skal du ikke bekymre dig, og du er også dækket. Gordon Forsythe anbefalede denne fantastiske bibliotek, som du alle måske ønsker at afprøve.

auryn

tak for alle de venlige ord, jeg har modtaget. Del artiklen, så flere og flere mennesker kan drage fordel.

Share

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *