Rychlý úvod do Vstřikování Závislost: co to je a kdy použít

Bhavya Karia

Úvod

V softwarové inženýrství, dependency injection je technika, kdy jeden objekt (nebo statická metoda) dodává závislosti jiného objektu. Závislost je objekt, který lze použít (služba).

to je definice Wikipedie, ale stále, ale není to příliš snadné pochopit. Takže to pochopíme lépe.,

než pochopíme, co to znamená v programování, nejprve se podívejme, co to znamená obecně, protože nám pomůže lépe porozumět konceptu.

závislost nebo závislost znamená spoléhat se na něco pro podporu. Jako kdybych řekl, že se příliš spoléháme na mobilní telefony, než to znamená, že jsme na nich závislí.

takže než se dostaneme k závislostním injekcím, nejprve pochopíme, co znamená závislost v programování.

když třída a používá některé funkce třídy B, pak se říká, že třída A má závislost třídy B.,

Ukazuje závislosti mezi třídami

V jazyce Java, než můžeme použít metody jiných tříd, musíme nejprve vytvořit objekt této třídy (tj. třídy A potřebuje k vytvoření instance třídy B).

takže přenos úlohy vytvoření objektu na někoho jiného a přímé použití závislosti se nazývá závislost injekce.

co kdyby kód mohl mluvit?

proč bych měl používat injekci závislosti?,

řekněme, že máme třídu automobilů, která obsahuje různé předměty, jako jsou kola, motor atd.

zde je třída automobilů zodpovědná za vytvoření všech objektů závislosti. Co když se v budoucnu rozhodneme zbavit MRFWheels a chceme použít kola Yokohama?

budeme muset znovu vytvořit objekt automobilu s novou závislostí Yokohama. Při použití aplikace dependency injection (DI) však můžeme měnit kola za běhu (protože závislosti lze injektovat spíše za běhu než v době kompilace).,

v našem kódu si můžete myslet na DI jako prostředníka, který dělá veškerou práci při vytváření preferovaného objektu kola a jeho poskytování třídě automobilů.

díky tomu je naše třída automobilů nezávislá na vytváření objektů kol,baterií atd.

v zásadě existují tři typy vstřikování závislosti:

  1. vstřikování konstruktoru: závislosti jsou poskytovány prostřednictvím konstruktoru třídy.
  2. injekce setru: klient vystavuje metodu setru, kterou injektor používá k injekci závislosti.,
  3. injekce rozhraní: závislost poskytuje injektorovou metodu, která vstříkne závislost do jakéhokoli klienta, který mu byl předán. Klienti musí implementovat rozhraní, které vystavuje metodu setter, která přijímá závislost.

Takže teď její závislost injekce odpovědnost:

  1. Vytvořit objekty
  2. Vědět, které třídy vyžadují tyto objekty
  3. A poskytnout jim všechny tyto objekty

Pokud tam je nějaká změna v objektech, pak DI, vypadá na to a to by se nemělo týkat třídy pomocí těchto objektů., Tímto způsobem, pokud se objekty v budoucnu změní, pak je jeho DI odpovědností poskytnout příslušné objekty třídě.

Inverze ovládání-koncept za DI

to uvádí, že třída by neměla staticky konfigurovat své závislosti, ale měla by být konfigurována jinou třídou zvenčí.

To je pátý princip. S. O. L. I. D — pět základních principů objektově orientovaného programování a design Strýček Bob — který říká, že třída by měla záviset na abstrakci a ne na konkrece (v jednoduchých podmínkách, hard-kódované).,

podle zásad by se třída měla soustředit na plnění svých povinností a ne na vytváření objektů, které vyžaduje k plnění těchto povinností. A to je místo, kde přichází do hry injekce závislosti: poskytuje třídě požadované objekty.

Poznámka: Pokud se chcete dozvědět o pevných principech strýčka Boba, můžete se vydat na tento odkaz.

Výhody použití DI

  1. pomáhá při testování jednotek.
  2. kód kotlové desky je snížen, protože inicializace závislostí se provádí vstřikovací složkou.,
  3. rozšíření aplikace je snazší.
  4. pomáhá povolit volné spojení, což je důležité při programování aplikací.

nevýhody di

  1. je to trochu složité se učit, a pokud nadužívaný může vést k problémům s řízením a dalším problémům.
  2. mnoho chyb v době kompilace je posunuto do doby běhu.
  3. rámce pro vstřikování závislostí jsou implementovány s odrazem nebo dynamickým programováním. To může bránit použití automatizace IDE, jako je „najít odkazy“, „zobrazit hierarchii hovorů“ a bezpečné refaktorování.,

můžete implementovat injekci závislosti na vlastní pěst (Pure Vanilla) nebo použít knihovny nebo rámce třetích stran.

Knihoven a Frameworků, které implementují DI

  • Jaro (Java)
  • Google Guice (Java)
  • Dýka (Java a Android)
  • Hrad Windsor (.NET)
  • Jednota(.,NET)

dozvědět Se více o dependency injection, můžete se podívat na níže uvedených zdrojů:

Java Dependency Injection — DI Design, Vzor, Příklad Tutoriál — JournalDev

Pomocí dependency injection v Javě — Úvod — Výuka — Vogella

Inverze Kontroly Kontejnerů a Dependency Injection vzor — Martin Fowler

Doufám, že to pomůže!

Pokud se vám tento článek líbil a chcete si přečíst další úžasné články, Následujte mě zde (Bhavya Karia) a ukažte svou podporu, protože mě motivuje psát více.,

Máte – li pro mě nějaké dotazy nebo zpětnou vazbu, než se připojíme na LinkedIn , Twitter, Facebook.

Upravit 1:

díky Sergey Ufocoder nyní tento článek byl převeden do ruského jazyka. Moji ruští přátelé a kteří všichni mohou číst ruský jazyk, to přečtou.

Odkaz na článek

Také, pokud chcete použít DI v Javascriptu a hledají knihovna pak Jo Surikat naznačuje, že zkusit se jeho knihovna.

Di-Ninja

další úžasnou knihovnu DI v JavaScriptu navrhl Nicolas Froidure.,

knifecycle

Edit 2:

Pokud jste vývojář PHP, nebojte se, dostali jste se také na všechny. Gordon Forsythe doporučil tuto úžasnou knihovnu, kterou byste si všichni mohli vyzkoušet.

auryn

děkuji za všechna laskavá slova, která jsem obdržel. Sdílejte článek, aby bylo možné těžit stále více lidí.

Share

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *