Care este diferența dintre Dependency Injection și Dependency Inversion?
sobes.tech AI
Răspuns de la AI
Injecția de Dependente (Dependency Injection, DI) și Inversarea Dependentei (Dependency Inversion, DIP) sunt concepte conexe, dar diferite, în domeniul proiectării software.
-
Principiul Inversării Dependinței (DIP) — unul dintre cele cinci principii SOLID. Acesta afirmă că:
- Modulele de nivel superior nu trebuie să depindă de modulele de nivel inferior. Ambele trebuie să depindă de abstracții.
- Abstracțiile nu trebuie să depindă de detalii. Detaliile trebuie să depindă de abstracții.
Acest principiu are ca scop reducerea cuplajului și creșterea flexibilității arhitecturii.
-
Injecția de Dependente (DI) — este un pattern (model) pentru implementarea inversării dependinței. DI înseamnă că dependențele unui obiect sunt transmise din exterior (de exemplu, prin constructor, setter sau interfață), în loc să fie create în interiorul obiectului.
Exemplu de DI în 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ție pornită");
}
};
int main() {
ConsoleLogger logger;
Application app(logger); // injecție de dependință
app.Run();
}
Pe scurt: DIP este un principiu de proiectare, iar DI este o metodă de a-l implementa.