Sobes.tech
Junior — Middle

Pode dar um exemplo de implementação do princípio de inversão de dependências na prática de programação?

sobes.tech IA

Resposta da IA

O princípio da inversão de dependências (Princípio da inversão de dependências) consiste em que os módulos de alto nível não devem depender de módulos de baixo nível, mas ambos devem depender de abstrações (interfaces ou classes abstratas).

Exemplo em C#:

// Abstração
public interface IMessageSender
{
    void Send(string message);
}

// Implementação de baixo nível
public class EmailSender : IMessageSender
{
    public void Send(string message)
    {
        Console.WriteLine($"Enviando email: {message}");
    }
}

// Módulo de alto nível
public class NotificationService
{
    private readonly IMessageSender _messageSender;

    public NotificationService(IMessageSender messageSender)
    {
        _messageSender = messageSender;
    }

    public void Notify(string message)
    {
        _messageSender.Send(message);
    }
}

// Uso
var emailSender = new EmailSender();
var notificationService = new NotificationService(emailSender);
notificationService.Notify("Olá!");

Dessa forma, NotificationService depende da abstração IMessageSender, e não de uma implementação concreta EmailSender, o que facilita a substituição da implementação e o teste.