"E' un pattern che permette di eseguire la scelta di un componente a run-time invece che nella compilazione. Un tipico utilizzo è quello del caricamento dinamico di un plugin o per effettuare il caricamento di oggetti sostitutivi in ambiente di test al posto di quelli che verrebbero caricati nell'ambiente di produzione".
E questa è più o meno la definizione. Vediamo un esempio.
Supponiamo di avere una classe Auto e una classe derivata Fiat.
class AutoSelector {
Auto fiatAuto = null;
public AutoSelector() {}
}
il reference fiatAuto è la dependency (dipendenza)
class AutoSelector {
Auto fiatAuto = null;
public AutoSelector(Fiat fiat)
{
fiatAuto=fiat;
}
}
ecco che abbiamo effettuato una dependency injection sull'istanza della variabile fiatAuto.
Abbiamo creato un forte accoppiamento tra il nostro codice e la classe Fiat... E se noi volessi creare un sistema per scegliere quale classe di auto utilizzare?
La soluzione è accoppiare la Dependency Injection al pattern Factory e utilizzare un file di config. Quindi utilizzare un componente esterno che tramite un file di config va a costruire gli oggetti e le dipendenze.
Nessun commento:
Posta un commento