Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Tommy
Člen
Avatar
Tommy:17.3.2014 20:46

V akej situácií je vhodné použiť Constructor Injection a v ktorej Method Injection?

 
Odpovědět
17.3.2014 20:46
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Tommy
David Hartinger:17.3.2014 20:50

O MethodInjection jsem ještě neslyšel, většinou se dělá přes konstruktor nebo property. Nějak mě nenapadá využití a co jsem googlil, tak všude mají v examplu metodu init(), což supluje za konstruktor.

Nahoru Odpovědět
17.3.2014 20:50
New kid back on the block with a R.I.P
Avatar
Tommy
Člen
Avatar
Tommy:17.3.2014 21:02

Neviem, či tomu správne rozumiem. Ale method injection by sa mala použiť napr. v takom prípade, že potrebujem aplikovať len nejaké pravidlá.

No to je len moja domnienka.

Prikladám úkažku:
public class ProductService
{
private IProductRepository _productRepository;
public ProductService(I­ProductReposi­tory productRepository)
{
_productRepository = productRepository;
}
public IEnumerable<Pro­duct> GetProductsAn­dApplyDiscount(
IProductDiscou­ntStrategy discount)
{
IEnumerable<Pro­duct> products = _productReposi­tory.FindAll();
foreach (Product p in products)
p.AdjustPrice­With(discount);
return products;
}
}

Editováno 17.3.2014 21:03
 
Nahoru Odpovědět
17.3.2014 21:02
Avatar
Odpovídá na Tommy
Drahomír Hanák:17.3.2014 21:08

Constructor Injection se mně osobně zdá nejčistší způsob předávání závislostí. Například proto, že bez závislostí pak nelze ten objekt vytvořit, je na první pohled jasné, na čem objekt závisí atp. V některých případech to třeba může být ukazatel na porušení Single Responsibility (když toho objekt dělá moc a má tak spoustu závislostí). Využít ho někdy ale nejde (např. nechci ho v daném případě použít) a pak bych použil Setter Injection. Je to ale můj subjektivní názor.

 
Nahoru Odpovědět
17.3.2014 21:08
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.