Bhavya Karia
Bevezetés
a szoftverfejlesztésben a függőségi befecskendezés olyan technika, amelynek során az egyik objektum (vagy statikus módszer) egy másik objektum függőségeit szolgáltatja. A függőség egy használható objektum (szolgáltatás).
Ez a Wikipedia definíciója, de még mindig, de nem különösebben könnyű megérteni. Tehát értsük meg jobban.,
mielőtt megértenénk, mit jelent a programozásban, először nézzük meg, mit jelent általában, mivel segít jobban megérteni a koncepciót.
függőség vagy függő azt jelenti, hogy valamire támaszkodunk a támogatáshoz. Mintha azt mondanám, hogy túl sokat támaszkodunk a mobiltelefonokra, mint ez azt jelenti, hogy tőlük függünk.
tehát mielőtt a függőségi injekciókhoz jutna, először értsük meg, mit jelent a függőség a programozásban.
amikor az A osztály A B osztály bizonyos funkcióit használja, akkor azt mondta, hogy az A osztály A B osztálytól függ.,
Java-ban, mielőtt más osztályok módszereit használnánk, először létre kell hoznunk az adott osztály objektumát (azaz az A osztálynak létre kell hoznia egy B osztályú példányt).
tehát az objektum létrehozásának feladatát valaki másnak, közvetlenül a függőség használatával dependency injection-nek nevezzük.
miért használjam a dependency injection-t?,
tegyük fel, hogy van egy autóosztályunk, amely különféle tárgyakat tartalmaz, például kerekeket, motort stb.
itt az autóosztály felelős az összes függőségi objektum létrehozásáért. Mi van, ha úgy döntünk, hogy a jövőben mrfwheels-t dobunk, és Yokohama kerekeket akarunk használni?
újra kell hoznunk az autó objektumát egy új Yokohama függőséggel. De a dependency injection (DI) használatakor futásidőben megváltoztathatjuk a kerekeket (mert a függőségek futásidőben, nem pedig fordításkor injektálhatók).,
Azt hiszem, DI, mint a közvetítő a kód, aki végzi a munkáját létre a kívánt kerekek tárgy, illetve azáltal, hogy a Kocsi osztály.
az autóosztályunk független a kerekek, az akkumulátor stb.
alapvetően háromféle függőségi befecskendezés létezik:
- konstruktor befecskendezés: a függőségek egy osztály konstruktoron keresztül vannak megadva.
- setter injection: az ügyfél egy szetter módszert tesz közzé, amelyet az injektor használ a függőség befecskendezéséhez.,
- interface injection: a dependency egy injektor módszert biztosít, amely a függőséget minden átadott kliensbe beadja. Az ügyfeleknek végre kell hajtaniuk egy olyan felületet, amely kiteszi a függőséget elfogadó szetter módszert.
tehát most a dependency injection felelőssége:
- hozza létre az objektumokat
- tudja, mely osztályok igénylik ezeket az objektumokat
- és adja meg nekik ezeket az objektumokat
Ha bármilyen változás történik az objektumokban, akkor DI belenéz, és nem érintheti az osztály ezeket az objektumokat., Ily módon, ha a tárgyak a jövőben megváltoznak, akkor a DI felelőssége, hogy a megfelelő objektumokat biztosítsa az osztály számára.
inversion of control —a koncepció mögött DI
Ez kimondja, hogy egy osztály nem kell beállítani a függőségek statikusan, de be kell állítani egy másik osztály kívülről.
Ez a S. O. L. I. D ötödik alapelve — Bob bácsi objektumorientált programozásának és tervezésének öt alapelve -, amely kimondja, hogy egy osztálynak absztrakciótól kell függnie, nem pedig konkrétumoktól (egyszerű szavakkal, kemény kódolással).,
az alapelvek szerint az osztálynak a feladatai teljesítésére kell koncentrálnia, nem pedig olyan tárgyak létrehozására, amelyek szükségesek e kötelezettségek teljesítéséhez. Ez az, ahol a dependency injection játékba kerül: biztosítja az osztály számára a szükséges objektumokat.
Megjegyzés: Ha Bob bácsi szilárd alapelveiről szeretne megtudni, akkor erre a linkre léphet.
A Di
- használatának előnyei segítenek az egység tesztelésében.
- a Kazánlemez kódja csökken, mivel a függőségek inicializálását az injektor komponens végzi.,
- Az alkalmazás kiterjesztése könnyebbé válik.
- segít a laza csatolásban, ami fontos az alkalmazás programozásában.
di
- egy kicsit bonyolult a tanulás, és ha túlhasznált vezethet kezelési problémák és egyéb problémák.
- sok fordítási időhibát a futási időre tolnak.
- a függőségi befecskendezési keretrendszerek reflexióval vagy dinamikus programozással kerülnek megvalósításra. Ez akadályozhatja az IDE automatizálás használatát, mint például a” referenciák keresése”, a” híváshierarchia megjelenítése ” és a biztonságos refactoring.,
a dependency injection-t saját (tiszta vanília) alkalmazhatja, vagy harmadik féltől származó könyvtárakat vagy keretrendszereket használhat.
könyvtárak és keretrendszerek, amelyek a DI
- Spring (Java)
- Google Guice (Java)
- Castle Windsor (. Net)
- Unity (.,NET)
Ha többet szeretne megtudni függőségi injekció, akkor nézd meg az alábbi források:
Java függőségi injekció-DI tervezési minta példa Tutorial-JournalDev
használata függőség injekció Java-Bevezetés-Tutorial-Vogella
inverzió kontroll konténerek és a függőség befecskendezési minta-Martin Fowler
remélem segít!
Ha tetszett a cikk, és szeretne olvasni több csodálatos cikkeket, akkor Kövess ide (Bhavya Karia), és mutassa meg a támogatást, mivel motivál, hogy írjon többet.,
Ha bármilyen kérdése vagy visszajelzése van számomra, akkor csatlakozzunk a LinkedIn , a Twitter, a Facebook oldalon.
Edit 1:
köszönhetően Szergej Ufocoder most ezt a cikket alakították át az orosz nyelvet. Az orosz barátaim, és akik mind el tudják olvasni az orosz nyelvet, olvassák el.
Link a cikk
is, ha azt szeretnénk, hogy alkalmazni di JavaScript és keres egy könyvtár, akkor Jo Surikat azt sugallja, hogy egy próbát, hogy a könyvtár.
di-Ninja
még egy félelmetes di könyvtár JavaScript javasolta Nicolas Froidure.,
knifecycle
Szerkesztés 2:
Ha egy PHP fejlesztő, akkor ne aggódj, megvan az összes tartozó is. Gordon Forsythe ajánlotta ezt a csodálatos könyvtárat, amelyet érdemes kipróbálni.
auryn
köszönöm az összes kedves szót, amit kaptam. Ossza meg a cikket, hogy egyre több ember részesülhessen előnyben.