Inverze řízení

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 26. května 2021; kontroly vyžadují 2 úpravy .

Inverze řízení (  IoC ) je důležitý princip objektově orientovaného programování používaný k omezení vazby (coupling) v počítačových programech [1] . Jedná se také o architektonické integrační řešení, které zjednodušuje rozšíření schopností systému, ve kterém je řídicí tok programu řízen frameworkem [2] .

V normálním programu se programátor rozhodne, v jakém pořadí bude proceduru volat. Ale pokud je použit framework , programátor může umístit svůj kód na určité spouštěcí body (pomocí zpětných volání nebo jiných mechanismů), pak spustit "hlavní funkci" frameworku, která se postará o veškeré provádění a v případě potřeby zavolá programátorův kód. V důsledku toho dochází ke ztrátě kontroly nad prováděním kódu – nazývá se to inverze řízení (framework řídí kód programátora, nikoli programátor řídí framework).

K inverzi řízení dochází nejen ve frameworkech, ale také v některých knihovnách (knihovny ale obvykle nevytvářejí inverzi řízení - poskytují sadu funkcí, které musí programátor volat).

Popis

Jednou implementací inverze řízení, jak je aplikována na správu závislostí, je vkládání závislostí [ 2 ] [ 3] .  Vstřikování závislostí se používá v mnoha rámcích nazývaných kontejnery IoC.

Ve srovnání s technologiemi nižší úrovně je kontejner IoC linker , který během provádění programu neshromažďuje soubory objektů , ale objekty OOP ( instance tříd ) . Je zřejmé, že k realizaci takové myšlenky bylo nutné vytvořit nejen samotný linker, ale také továrnu , která vyrábí předměty. Analogem takového linkeru (samozřejmě funkčnějším) je kompilátor , jehož jednou z funkcí je vytváření objektových souborů. Myšlenka propojení programu za běhu není nic nového. Poskytnutí nástrojů pro vkládání závislostí programátorovi poskytlo mnohem větší flexibilitu ve vývoji a pohodlí při testování kódu [4] .

Metody implementace

Kritika

Všechny přístupy založené na inverzi řízení trpí následujícími dvěma nevýhodami [5] :

Poznámky

  1. Inverze řízení pomocí Managed Extensibility Framework (MEF) . Získáno 6. října 2016. Archivováno z originálu 4. ledna 2017.
  2. 12. Jang , 2012 .
  3. Robert C. Martin. Čistý kód: Příručka agilního softwarového řemesla. - Pearson Education, 2008. - S. 157. - ISBN 978-0-13-608325-2 .
  4. Martin Fowler. Inverze kontrolních kontejnerů a závislostní vzor vstřikování . Získáno 6. října 2016. Archivováno z originálu 30. května 2020.
  5. Agha, G. a Igarashi, A. a Kobayashi, N. a Masuhara, H. a Matsuoka, S. a Shibayama, E. a Taura, K. Concurrent Objects and Beyond: Papers věnované Akinori Yonezawovi u příležitosti jeho 65. narozeniny. - Springer Berlin Heidelberg, 2014. - S. 433. - ISBN 9783662444719 .

Literatura

Odkazy