Sobes.tech
Junior — Middle

Pode explicar o princípio de injeção de dependências no código de programação e seu propósito principal?

sobes.tech IA

Resposta da IA

A injeção de dependências (Dependency Injection, DI) é um padrão em que um objeto recebe as suas dependências de fora, em vez de as criar por si próprio. Isto aumenta a modularidade, a testabilidade e a flexibilidade do código.

O objetivo principal do DI:

  • Separação de responsabilidades: a classe não é responsável por criar dependências.
  • Simplificação dos testes: as dependências podem ser substituídas por mocks ou stubs.
  • Aumento da flexibilidade: alterar facilmente as implementações das dependências sem modificar a classe.

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; // dependência injetada de fora
    }

    public void CreateUser(string name) {
        // lógica de criação de utilizador
        _logger.Log($"Utilizador {name} criado.");
    }
}

// Ao criar UserService, passamos a implementação necessária de ILogger
var service = new UserService(new ConsoleLogger());