Dependency injection

design pattern della programmazione orientata agli oggetti

Dependency injection (DI) è un design pattern della programmazione orientata agli oggetti, il cui scopo è quello di semplificare lo sviluppo e migliorare la testabilità di software di grandi dimensioni. Si realizza quando un componente software richiede le dipendenze da un fonte esterna, senza prendersi in carico di crearsi le proprie[1].

Diagramma UML che mostra un esempio di dependency injection

Per utilizzare tale design pattern è sufficiente dichiarare le dipendenze di cui un componente necessita (dette anche interface contract). Quando il componente verrà istanziato, un iniettore si prenderà carico di risolvere le dipendenze (attuando dunque l'inversione del controllo). Se è la prima volta che si tenta di risolvere una dipendenza l'injector istanzierà il componente dipendente, lo salverà in un contenitore di istanze e lo restituirà, altrimenti restituirà la copia salvata nel contenitore. Una volta risolte tutte le dipendenze, il controllo può tornare al componente applicativo.

Il pattern della dependency injection coinvolge almeno tre elementi:

  • una componente dipendente
  • la dichiarazione delle dipendenze del componente, definite come interface contract
  • un injector (chiamato anche provider o container) che crea, a richiesta, le istanze delle classi che implementano delle dependency interface.
  1. ^ (EN) Steven van Deursen e Markus Seemann, Dependency injection: principles, practices, patterns, Manning, 2019, ISBN 978-1-61729-473-0.

Altri progetti

modifica
  Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica