Junior — Middle
Poderia dar um exemplo de uso do princípio da inversão de dependências no desenvolvimento real?
sobes.tech IA
Resposta da IA
O princípio da inversão de dependências (Dependency Inversion Principle, DIP) afirma que os módulos de alto nível não devem depender diretamente dos módulos de baixo nível, mas ambos devem depender de abstrações.
Exemplo em Java:
// Abstração
public interface MessageService {
void sendMessage(String message);
}
// Implementação concreta
public class EmailService implements MessageService {
public void sendMessage(String message) {
System.out.println("Envio de email: " + message);
}
}
// Classe que depende da abstração, não da implementação concreta
public class Notification {
private MessageService service;
public Notification(MessageService service) {
this.service = service;
}
public void notifyUser(String message) {
service.sendMessage(message);
}
}
// Uso
public class Main {
public static void main(String[] args) {
MessageService emailService = new EmailService();
Notification notification = new Notification(emailService);
notification.notifyUser("Olá!");
}
}
Aqui, a classe Notification depende da interface MessageService, não da implementação concreta EmailService. Isso permite trocar facilmente a implementação (por exemplo, para um serviço SMS) sem alterar o código de Notification. Essa abordagem melhora a testabilidade e a extensibilidade do código.