Inversarea controlului

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

În programare , mai ales că la obiecte , inversiunea controlului (în engleză inversion of control, prescurtată Ioc) este un model pentru care o componentă a stratului de aplicație primește controlul de la o componentă aparținând unei biblioteci reutilizabile. Această schemă o răstoarnă pe cea tradițională a programării procedurale , în care codul aplicației își îndeplinește sarcinile apelând (și astfel trecând controlul ) la procedurile bibliotecii [1] [2] [3] .

Descriere

Obiectivul inversării controlului este același cu fabrica abstractă : să facă componentele software cât mai independente posibil, astfel încât să fie posibilă modificarea unei părți fără a fi nevoie să le modificați pe celelalte.

Dependențele dintre componentele individuale sunt declarate într-un mod simplu. De exemplu, o clasă Automobile care are nevoie de un obiect de tip Motore , va declara o variabilă de instanță de tip Motore și o metodă de setare a referinței obiectului în timp de execuție.

Dependențele pot fi, prin urmare, „injectate” din exterior: nu se urmărește fluxul normal de control al limbajelor imperative , în care, atunci când este necesar, funcțiile claselor sau bibliotecilor externe sunt numite. Obiectele nu instanțiază și nu reamintesc obiectele de care depinde munca lor, dar aceste capacități sunt furnizate dintr-un mediu extern prin contracte definite de ambele entități.

Injecție de dependență

Injecția de dependență este una dintre tehnicile cu care poate fi implementată inversiunea controlului. Preia controlul asupra tuturor aspectelor legate de crearea obiectelor și a dependențelor acestora. Biblioteca Java Spring utilizează Dependency Injection foarte larg, având ca rezultat, printre altele, eliminarea oricărei logici de inițializare din codul aplicației. În mod normal, fără utilizarea acestei tehnici, dacă un obiect trebuie să acceseze un anumit serviciu, obiectul însuși își asumă responsabilitatea pentru gestionarea acestuia, fie având o referință directă la serviciu, fie identificându-l cu un „ Localizator de servicii ” care returnează o referință la o implementare specifică a serviciului. Cu utilizarea injecției de dependență, obiectul are în sine doar o proprietate care poate găzdui o referință la acel serviciu și, atunci când obiectul este instanțiat, o referință la o implementare a acestui serviciu este injectată de cadrul extern, fără ca programatorul cine creează obiectul nu știe nimic despre plasarea serviciului sau alte detalii ale acestuia.

Implementări și exemple

Java

.NET

Notă

Informatică Portal IT : accesați intrările Wikipedia care se ocupă cu IT