Utilizzo AutoFac da qualche tempo per occuparmi dell'iniezione delle dipendenze che stiamo utilizzando in un progetto web. Tutto va bene, ma ora voglio dimostrare DI al di fuori di un contesto AutoFac per ragioni irrilevanti a questa domanda.
In tal modo, sto leggendo i metodi "manuali" per ottenere questo modello. Tutti gli esempi di tutorial funzionano (ovviamente), ma il problema degli oggetti strettamente associati esiste ancora.
Prendi questo esempio: link
Il costruttore della classe dipendente prende un'interfaccia:
public class BusinessFacade {
private IBusinessLogic businessLogic;
public BusinessFacade(IBusinessLogic businessLogic) {
this.businessLogic = businessLogic;
}
}
Tuttavia, l'istanziazione di BusinessFacade
richiede ancora che venga implementata un'implementazione concreta, il che significa che occorre implementare un'implementazione:
IBusinessLogic productBL = new ProductBL();
BusinessFacade businessFacade = new BusinessFacade(productBL);
Domanda
Ora so, da qualche parte qualcosa (sia che si tratti di un contenitore o di un codice scritto manualmente) dovrà decidere sull'implementazione da scegliere, ma come posso venire a patti con il beneficio di spostare tale decisione al di fuori di la classe dipendente? Ovviamente la classe BusinessFacade non è più strettamente accoppiata, ma siamo ancora molto espliciti su quale implementazione scegliamo - quindi cosa è stato ottenuto qui? È puramente per il fatto che possiamo prendere in giro le dipendenze?