Ma che cos'è una Dependency? Facciamo un esempio per chiarire le cose. Supponiamo di avere la seguente classe Macchina:
public class Macchina
{
private Motore _motore;
public void Macchina()
{
}
public void Cammina()
{
..
_motore.Start();
..
}
}
La variabile _motore è una Dependency per la classe Macchina. In pratica l'oggetto macchina dipende dall'oggetto motore (in effetti senza motore la macchina è poca cosa).
In termini informatici la dipendenza (Dependency) non è altro che un campo di una classe (variabile di istanza) contenente il riferimento ad un oggetto esterno.
Modifichiamo l'esempio precedente in questo modo:
public class Macchina
{
private Motore _motore;
public void Macchina(Motore motore)
{
_motore = motore;
}
public void Cammina()
{
..
_motore.Start();
..
}
}
Attraverso il costruttore possiamo specificare il motore della nostra macchina: in effetti possiamo iniettare un oggetto Motore nella variabile di istanza _motore;
L'Injection avviene proprio quando dall'esterno della classe che contiene la Dependency viene passata la dependency stessa già inizializzata. Vediamo come questo avviene:
public class MacchinaTest
{
public static void Test()
{
Motore mo = new Motore();
Macchina ma = new Macchina(mo);
ma.Cammina();
}
}
In questo caso la "Dependency Injection" è avvenuta tramite costruttore, ma tale tecnica può essere realizzata con un metodo "set" o tramite Interfaccia.
Esistono infatti 3 tipi di Dependency Injection:
- Constructor Injection
- Setter Injection
- Interface Injection
Nessun commento:
Posta un commento