Intern
Kuo skiriasi Dependency Injection nuo Dependency Inversion?
sobes.tech AI
Atsakymas iš AI
Priklausomybių įvedimas (Dependency Injection, DI) ir Priklausomybių inversija (Dependency Inversion, DIP) yra susiję, bet skirtingi konceptai programinės įrangos projektavimo srityje.
-
Priklausomybių inversijos principas (DIP) — vienas iš penkių SOLID principų. Jis sako, kad:
- Aukšto lygio moduliai neturėtų priklausyti nuo žemo lygio modulių. Abu turėtų priklausyti nuo abstrakcijų.
- Abstrakcijos neturėtų priklausyti nuo detalių. Detalės turėtų priklausyti nuo abstrakcijų.
Šis principas siekia sumažinti sujungimą ir padidinti architektūros lankstumą.
-
Priklausomybių įvedimas (DI) — yra modelis (metodas) įgyvendinti priklausomybių inversiją. DI reiškia, kad objekto priklausomybės jam perduodamos iš išorės (pavyzdžiui, per konstruktorių, nustatymo metodą ar sąsają), o ne kuriamos viduje.
Pavyzdys DI 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("Programos paleidimas");
}
};
int main() {
ConsoleLogger logger;
Application app(logger); // priklausomybių įvedimas
app.Run();
}
Trumpai: DIP yra projektavimo principas, o DI — jo įgyvendinimo būdas.