Návrhové vzory Obrácení řízení a Injektáž závislostí

Obrácení řízení (IoC - Inversion of Control) je již dlouho používaný návrhový vzor, jenž v původním významu představoval techniku, s jejíž pomocí dochází k přenesení řízení běhu programu z kódu, který navrhuje programátor, na podpůrný aplikační rámec. Lze tedy říci, že jakýkoliv aplikační rámec včetně rámce Spring™ a EJB je aplikací návrhového vzoru IoC. S nástupem aplikačních rámců, jakými jsou Spring či PicoContainer™, se však význam IoC začal posunovat a ještě v nedávné době byl běžně používán pro popis způsobu, jakým je v těchto aplikačních rámcích zajištěno provázání spravovaných objektů.

Na toto zmatení pojmů reagovali přední teoretici i praktici v této oblasti (včetně Roda Johnsona) a rozhodli se pro zavedení nového pojmu Injektáž závislostí (DI - Dependency Injection). Zjednodušeně řečeno lze postup při použití DI popsat takto: Mějme závislost objektu A na objektu B, jinými slovy objekt A obsahuje odkaz na objekt B. Při použití DI budou při startu kontejneru, který je spravuje, oba objekty vytvořeny a v objektu A bude inicializován odkaz na objekt B. Existuje několik způsobů, jak toho lze dosáhnout, my však zmíníme jen dva zdaleka nejrozšířenější.

První způsob umožňuje uspokojení závislostí prostřednictvím nastavovacích (set) metod objektu a proto bývá označován jako Setter Injection. Druhou možností je pak varianta s názvem Constructor Injection, která využívá standardních konstruktorů jazyka Java. A právě tyto dvě varianty jsou podporovány rámcem Spring™.

V minulosti se provázání objektů dosahovalo buď přímou instanciací v kódu třídy, případně různými vyhledávacími (lookup) mechanismy (např. JNDI) či aplikací návrhového vzoru Lokátor služby (Service Locator). Přestože v tomto pořadí šlo vždy o krok kupředu, všechna tato řešení jsou horší než IoC, a to zejména z hlediska příliš úzkého vzájemného svázání objektů a zhoršené čitelnosti a udržovatelnosti kódu.

Komentáře

komentoval: Simon Macharacek, dne: 07. 11. 2007, 15:27

Injektáž závislostí je opravdu pěkný český překlad DI, podobně jako Obrácení řízení pro IoC ;-) Uděláme ve firmě malý průzkum, co si pod těmito termíny kdo představí a o výsledku Vás budu informovat.

komentoval: Jan Vitasek, dne: 09. 11. 2007, 17:35

+1 misto terminu injektáž použijte raději termín injekce. Je to daleko srozumitelnější. Jinak jsem rád za to že vidím že někdo zprostředkovává „nové“ věci lidem co neumí anglicky. I když se to může ukázat pro ně kontraproduktivní než se to naučit z anglického zdroje. Angličtina je v IT všude…

Vložit komentář

Můžete používat značkovací jazyk Texy!


Jméno:
E-mail:
Url:
Komentář:
1 + 2 =
 
MoroSystems, s.r.o.