https://github.com/castleproject/Windsor... pokud používáte DI, new by se vám tam moc objevovat skutečně nemělo. (pozor na overengineering) Pokud potřebu vaše aplikace nějaké závislosti, je třeba se zamyslet na dtim, jestli konkrétní implementace bude vyžadovat na základě například debugu / testu / releasu měnit implementaci, případně danou věc budete chtít používat na více místech... výhoda interface + IOC je především to, že máte stanovený contract a implementace je tedy variabilní... můžete tedy kdykoliv nějakou část vaší aplikace vyměnit.. podle SOLIDU by jste ideálně neměl mít nikde ve třídě referenci na konkrétní implementaci, ale pouze na Interface.. todle přináší hodně výhod, kromě toho je to ale skvělá cesta mít vše zbytečně složité, než to být musí.. takže vždy používat mozek ;-) Obecně... mohu vám říci můj názor, který se mi vždy zatím oplatit.. principy OOP a Solid vám mají pomáhat, nesnažte se je za každou cenu dodržovat, pokud vám mají přidělat práci. Sám DI/IOC v multi-tier architektuře porušují OOP principy, na druhou stranu plně dodržují SOLID.. Je tedy velké ironie, že SOLID (pravidla pro OOP) jsou skvělým argumentem, proč OOP né- vždy dodržovat, jelikož, pokdu dodržíte vždy OOP, porušíte tím solid :-)
|