Qual é a diferença entre Dependency Injection e Dependency Inversion?
sobes.tech IA
Resposta da IA
A Injeção de Dependências (Dependency Injection, DI) e a Inversão de Dependências (Dependency Inversion, DIP) são conceitos relacionados, mas diferentes, na área do design de software.
-
Princípio da Inversão de Dependências (DIP) — um dos cinco princípios SOLID. Ele afirma que:
- Os módulos de nível superior não devem depender dos módulos de nível inferior. Ambos devem depender de abstrações.
- As abstrações não devem depender dos detalhes. Os detalhes devem depender das abstrações.
Este princípio visa reduzir o acoplamento e aumentar a flexibilidade da arquitetura.
-
Injeção de Dependências (DI) — é um padrão (método) para implementar a inversão de dependências. DI significa que as dependências de um objeto são passadas a ele de fora (por exemplo, através do construtor, de um setter ou de uma interface), em vez de serem criadas dentro do objeto.
Exemplo de DI em C++:
class ILogger {
public:
virtual void Log(const std::string& message) = 0;
};
class ConsoleLogger : public ILogger {
public:
void Log(const std::string& message) override {
std::cout << message << std::endl;
}
};
class Application {
ILogger& logger;
public:
Application(ILogger& logger) : logger(logger) {}
void Run() {
logger.Log("Aplicação iniciada");
}
};
int main() {
ConsoleLogger logger;
Application app(logger); // injeção de dependência
app.Run();
}
Resumindo: DIP é um princípio de design, e DI é uma maneira de implementá-lo.