6. díl - Předávání závislostí pomocí Depencency Injection

Návrhové vzory Softwarové architektury a depencency injection Předávání závislostí pomocí Depencency Injection

V minulé lekci, Špatné způsoby předávání závislostí - Singleton a SL, jsme dokončili průlet špatnými způsoby předávání závislostí ve vícevrstvých aplikacích. Celkově to byla jakákoli statika včetně Singletonu, ale také i předávání kontejneru se závislostmi, známé jako vzor service locator, případně různé variace těchto způsobů. Dnes si na našem příkladu s evidencí automobilů ukážeme, jak to dělat správně.

Pracné způsoby

Jediným nám známým správným způsobem je zatím závislosti předávat ručně, jednu po jedné. To je také způsob, který jsme si ukázali na samém začátku kurzu. Vytvořili jsme si instanci databáze již v index.php a tu postupně předávali do kontroleru a z něj do modelu, kde byla potřeba. Ačkoli je tento způsob návrhově korektní, dokážete si jistě představit, kolik práce by dalo takto předávat několik závislostí i jen ve středně velké aplikaci. A jelikož jsou kontrolery tvořené automaticky routerem, museli bychom navíc poznat jaké závislosti jakému kontroleru předat. Minule jsem slíbil, že váš již nebudu trápit se špatnými řešeními a otázkami. Dnešní lekce naopak přinese odpovědi na všechno. Vážně :)

Co bylo špatně?

Ve všech představených řešeních jsme se snažili zohýbat kód tak, abychom nemuseli závislosti předávat. Toho ovšem NELZE dosáhnout bez negativních dopadů. Všechny podobné pokusy budou vždy končit neúspěchem. Pokud nepředáme každé třídě jen to, co potřebuje, vždy bude mít k dispozici více než je třeba a řešení bude:

  • nebezpečné
  • globální
  • nezapouzdřené
  • návrhově špatně

Závislosti musíme předávat, přesně pro každou třídu zvlášť.

Automatizace

Dobrá zpráva je, že se předávání závislostí dá zautomatizovat. To znamená, že každá třída dostane jen to co potřebuje a tyto závislosti jí budou předány automaticky. K tomu potřebujeme 3 věci:


 

...konec náhledu článku...

Prémiový článek

Prémiový článek

Na itnetwork.cz se nachází největší a nejucelenější česká databáze s výukovými články, jejímž cílem je umožnit kvalitní vzdělání v oblasti IT úplně každému. Měsíčně zobrazíme k milionu článků a sklidíme desítky děkovných emailů, kde nám sdělujete, že jsme vám pomohli k lepšímu zaměstnání nebo vzdělání.

Ačkoli se snažíme držet většinu obsahu úplně zadarmo, udržovat síť v provozu a aktuální stojí obrovské úsilí. Proto je nějaký obsah, jako cvičení nebo odbornější články, přístupný pouze za body. Nebojte, nestojí to skoro nic :)

Popis článku

Požadovaný článek má následující obsah:

V tutoriálu vysvětlíme proč jsme předtím předávali závislosti špatně, co je Inversion of Control a jak funguje návrhový vzor Depencency Injection v praxi.
Pro přístup k článku potřebuješ 24 bodů
Na svém účtu máš aktuálně 0 bodů
24 bodů získáš za přidání svého článku na síť nebo za 60 Kč

Koupí článku k němu získáš neomezený přístup a to napořád. Posuneš své znalosti zas kousek dopředu a zároveň nám pomůžeš udržovat celý projekt při životě a pomáhat vám tak k lepší budoucnosti.

Obsah článku spadá pod licenci Premium III, koupí článku souhlasíš se smluvními podmínkami.

Body získáš, když podpoříš naši síť. To můžeš udělat buď zasláním symbolické částky na podporu provozu nebo přidáním obsahu na síť.

Dobít body můžeš okamžitě např.:

Kartou SMS Převodem
Kartou SMS Převodem

 

Článek pro vás napsal David Čápka
Avatar
Autor pracuje jako softwarový architekt a pedagog na projektu ITnetwork.cz (a jeho zahraničních verzích). Velmi si váží svobody podnikání v naší zemi a věří, že když se člověk neštítí práce, tak dokáže úplně cokoli.
Unicorn College Autor se informační technologie naučil na Unicorn College - prestižní soukromé vysoké škole IT a ekonomie.
Aktivity (1)