Sobes.tech
Middle

Fala sobre o princípio de Inversão de Dependências (DIP) do SOLID com um exemplo

sobes.tech IA

Resposta da IA

O princípio de Inversão de Dependências (DIP) do SOLID afirma que os módulos de nível superior não devem depender diretamente de módulos de nível inferior. Em vez disso, ambos devem depender de abstrações (por exemplo, interfaces). As abstrações não devem depender dos detalhes, mas os detalhes devem depender das abstrações.

Exemplo no frontend: suponha que temos um componente que envia dados para o servidor. Em vez de usar diretamente um cliente HTTP específico, criamos uma interface IDataSender e a implementamos de várias maneiras (por exemplo, usando fetch ou axios). O componente depende da interface, não da implementação concreta.

interface IDataSender {
  send(data: any): Promise<void>;
}

class FetchSender implements IDataSender {
  async send(data: any) {
    await fetch('/api', { method: 'POST', body: JSON.stringify(data) });
  }
}

class Component {
  constructor(private sender: IDataSender) {}

  async save(data: any) {
    await this.sender.send(data);
  }
}

// Uso
const sender = new FetchSender();
const component = new Component(sender);
component.save({ name: 'Test' });

Dessa forma, podemos alterar a implementação do envio sem modificar o componente, facilitando testes e manutenção.