In Dependency Injection di Mark Seeman in .NET, inietta un repository nel suo livello di interfaccia utente. Credo che lo stia facendo in modo che possa archiviare tutto nella configurazione dell'interfaccia utente, tuttavia questo mi sembra un cattivo design. Non sarebbe meglio passare il riferimento di servizio nell'interfaccia utente? Che cosa impedisce a uno sviluppatore futuro di utilizzare direttamente il repository? Inoltre, dice che sta costruendo questo come un'architettura n-tier. Ma ora ha accoppiato il livello dati al livello dell'interfaccia utente (indipendentemente dal fatto che DI sia usato o meno). Cosa succede se vuole ospitare tutti e tre i livelli su diversi server autonomi. Mentre il suo approccio potrebbe funzionare, mi sembra sbagliato. Quindi, volevo vedere cosa ha da dire la comunità generale. Ho ragione nei miei pensieri, o mi sto perdendo qualcosa?
Versione semplificata del codice:
public class UI
{
IRepository _repo;
public UI(IRepository repo)
{
_repo = repo;
}
public stuff UIMethod()
{
var svc = new Service(_repo);
return svc.GetStuff();
}
}
public class Service
{
IRepository _repo;
public Service(IRepository repo)
{
_repo = repo;
}
public stuff GetStuff()
{
var persistenceStuff = _repo.GetStuff();
//Do some business logic here
return persistenceStuff.ToServiceStuff();
}
}