Sobes.tech
Junior — Middle

Como é que se pode reduzir a dependência dos componentes no código para aumentar a sua flexibilidade?

sobes.tech IA

Resposta da IA

Para reduzir a dependência de componentes no código C# e aumentar a sua flexibilidade, aplicam-se os princípios de inversão de dependências e injeção de dependências (Dependency Injection). Isto permite separar a criação de objetos do seu uso, facilitando a substituição e o teste de componentes.

Principais abordagens:

  • Uso de interfaces ou classes abstratas para definir contratos.
  • Injeção de dependências através do construtor, propriedades ou métodos.
  • Uso de contêineres de injeção de dependências (contenores DI), como Microsoft.Extensions.DependencyInjection, Autofac, etc.

Exemplo de injeção de dependência através do 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 utilizador
        _logger.Log($"Utilizador {name} criado.");
    }
}

// Uso
var logger = new ConsoleLogger();
var service = new UserService(logger);
service.CreateUser("Alice");

Este método reduz a dependência rígida entre classes e facilita a manutenção e expansão do código.