Inversion av kontroll

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 26 maj 2021; kontroller kräver 2 redigeringar .

Inversion of control (  IoC ) är en viktig objektorienterad programmeringsprincip som används för att reducera koppling (koppling) i datorprogram [1] . Det är också en arkitektonisk integrationslösning som förenklar expansionen av systemkapacitet, där styrflödet av programmet styrs av ramverket [2] .

I ett normalt program bestämmer programmeraren i vilken ordning proceduren ska ringas. Men om ett ramverk används kan programmeraren placera sin kod vid vissa exekveringspunkter (med hjälp av callbacks eller andra mekanismer), sedan köra ramverkets "huvudfunktion" som kommer att hantera all exekvering och anropa programmerarens kod vid behov. Som ett resultat blir det en förlust av kontroll över exekveringen av koden - detta kallas inversion av kontroll (ramverket styr programmerarens kod, och inte programmeraren styr ramverket).

Invertering av kontroll sker inte bara i ramverk, utan också i vissa bibliotek (men vanligtvis skapar bibliotek inte inversion av kontroll - de tillhandahåller en uppsättning funktioner som programmeraren måste anropa).

Beskrivning

En implementering av inversion av kontroll som tillämpas på beroendehantering är beroendeinjektion [ 2 ] [ 3] .  Beroendeinjektion används i många ramverk som kallas IoC-behållare.

Jämfört med tekniker på lägre nivå är en IoC-behållare en länkare som inte samlar in objektfiler utan OOP - objekt ( klassinstanser ) under programkörning . Uppenbarligen, för att implementera en sådan idé, var det nödvändigt att skapa inte bara länken själv, utan också en fabrik som producerar föremål. En analog till en sådan länk (naturligtvis mer funktionell) är en kompilator , en av funktionerna som är att skapa objektfiler. Tanken på att länka ett program vid körning är ingen nyhet. Att förse programmeraren med verktyg för injicering av beroende har gett mycket mer flexibilitet i utvecklingen och bekvämlighet vid testning av kod [4] .

Implementeringsmetoder

Kritik

Alla tillvägagångssätt baserade på inversion av kontroll lider av följande två nackdelar [5] :

Anteckningar

  1. Inversion av kontrollen med Managed Extensibility Framework (MEF) . Hämtad 6 oktober 2016. Arkiverad från originalet 4 januari 2017.
  2. 12 Yang , 2012 .
  3. Robert C. Martin. Clean Code: A Handbook of Agile Software Craftsmanship. - Pearson Education, 2008. - S. 157. - ISBN 978-0-13-608325-2 .
  4. Martin Fowler. Inversion av kontrollbehållare och beroendeinjektionsmönstret . Hämtad 6 oktober 2016. Arkiverad från originalet 30 maj 2020.
  5. Agha, G. och Igarashi, A. och Kobayashi, N. och Masuhara, H. och Matsuoka, S. och Shibayama, E. och Taura, K. Concurrent Objects and Beyond: Paper dedikerade till Akinori Yonezawa vid tillfället av hans 65-årsdag. - Springer Berlin Heidelberg, 2014. - S. 433. - ISBN 9783662444719 .

Litteratur

Länkar