🎯 Desvendando o Princípio da Inversão de Dependência (DIP)🔀

Miguel Batista
2 min readJan 5, 2024

O Princípio da Inversão de Dependência (Dependency Inversion Principle — DIP) estabelece que os módulos de alto nível não devem depender de módulos de baixo nível.

Ambos devem depender de abstrações. Além disso, abstrações não devem depender de detalhes, mas detalhes devem depender de abstrações. Vamos criar um exemplo em C# que ilustra o DIP:

modulo alto nível depende de modulo de baixo nível e modulo alto/baixo nível depende de abstração

Suponha que estamos desenvolvendo um sistema de notificação, onde podemos enviar mensagens de diferentes tipos, como e-mails e mensagens de texto. Aplicaremos o DIP para garantir que os módulos de alto nível não dependam diretamente dos módulos de baixo nível e que ambas as partes dependam de abstrações.

using System;

// Abstração para um serviço de notificação.
interface INotificationService
{
void EnviarMensagem(string mensagem);
}

// Implementação concreta para envio de e-mails.
class EmailService : INotificationService
{
public void EnviarMensagem(string mensagem)
{
Console.WriteLine("Enviando e-mail: " + mensagem);
}
}

// Implementação concreta para envio de mensagens de texto.
class SMSNotificationService : INotificationService
{
public void EnviarMensagem(string mensagem)
{
Console.WriteLine("Enviando mensagem de texto: " + mensagem);
}
}

// Classe de alto nível que depende da abstração INotificationService.
class Notificador
{
private readonly INotificationService _notificationService;

public Notificador(INotificationService notificationService)
{
_notificationService = notificationService;
}

public void Notificar(string mensagem)
{
_notificationService.EnviarMensagem(mensagem);
}
}

class Program
{
static void Main()
{
// Usando o Princípio da Inversão de Dependência para notificar por e-mail.
INotificationService emailService = new EmailService();
Notificador notificadorPorEmail = new Notificador(emailService);
notificadorPorEmail.Notificar("Isso é um e-mail de teste.");

// Usando o Princípio da Inversão de Dependência para notificar por mensagem de texto.
INotificationService smsService = new SMSNotificationService();
Notificador notificadorPorSMS = new Notificador(smsService);
notificadorPorSMS.Notificar("Isso é uma mensagem de texto de teste.");
}
}

Neste exemplo, temos uma abstração INotificationService que define um contrato para serviços de notificação. Temos duas implementações concretas: EmailService e SMSNotificationService. A classe de alto nível Notificador depende da abstração INotificationService e pode notificar usando qualquer uma das implementações concretas.

O DIP é seguido aqui porque a classe de alto nível (Notificador) depende de uma abstração (INotificationService) e não de detalhes específicos de implementação. Isso torna o sistema mais flexível e permite a troca fácil de implementações de serviços de notificação sem afetar o código de alto nível.

Espero que a explicação tenha sido esclarecedora e útil para todos que leram o post🤞

Não hesite em buscar mais informações para aprimorar o conhecimento na programação! Obrigado e sucesso! 😎

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

Miguel Batista
Miguel Batista

Written by Miguel Batista

Formado em Sistemas para Internet, sempre em contato com programação de software. Aprender e compartilhar conhecimento para soluções tech de qualidade.

No responses yet

Write a response