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.