Sobes.tech
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.