Junior — Middle
Qual é o papel e as vantagens de usar injeção de dependências na programação?
sobes.tech IA
Resposta da IA
Injeção de Dependências (DI) é um padrão de projeto em que as dependências de um objeto são passadas a ele de fora, em vez de serem criadas dentro dele.
Papel do DI:
- Permite separar a criação de objetos do seu uso.
- Facilita a gestão de dependências entre classes.
- Aumenta a modularidade e a testabilidade do código.
Vantagens:
- Melhoria na testabilidade: é fácil substituir dependências por mocks ou stubs.
- Redução do acoplamento: as classes não dependem de implementações concretas, mas de abstrações.
- Facilita a manutenção: mudanças nas dependências não requerem alterações nas classes que as utilizam.
Exemplo em C# usando construtor:
public interface ILogger { void Log(string message); }
public class ConsoleLogger : ILogger { public void Log(string message) => Console.WriteLine(message); }
public class UserService
{
private readonly ILogger _logger;
public UserService(ILogger logger) { _logger = logger; }
public void CreateUser(string name) {
// lógica de criação de usuário
_logger.Log($"Usuário {name} criado.");
}
}
// Injeção de dependência
var logger = new ConsoleLogger();
var service = new UserService(logger);
service.CreateUser("Alice");
Aqui, UserService não cria o ConsoleLogger por conta própria, mas o recebe de fora, o que facilita a substituição do logger se necessário.