Intern
Mis vahe on Dependency Injection ja Dependency Inversion vahel?
sobes.tech AI
Vastus AI-lt
Sõltuvuste sisestamine (Dependency Injection, DI) ja sõltuvuste pööramine (Dependency Inversion, DIP) on seotud, kuid erinevad kontseptsioonid tarkvaraarhitektuuri valdkonnas.
-
Sõltuvuste pööramise põhimõte (DIP) — üks viiest SOLID põhimõttest. See ütleb, et:
- Kõrgema taseme moodulid ei tohi sõltuda madalama taseme moodulitest. Mõlemad peaksid sõltuma abstraktsioonidest.
- Abstraktsioonid ei tohi sõltuda üksikdetailidest. Detailid peavad sõltuma abstraktsioonidest.
See põhimõte on suunatud sidususe vähendamisele ja arhitektuuri paindlikkuse suurendamisele.
-
Sõltuvuste sisestamine (DI) — on muster (meetod) sõltuvuste pööramise teostamiseks. DI tähendab, et objekti sõltuvused antakse talle väljastpoolt (näiteks konstruktor, setter või liides), mitte ei loo neid objekti sees.
Näide DI-st C++-s:
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("Rakendus käivitus");
}
};
int main() {
ConsoleLogger logger;
Application app(logger); // sõltuvuste sisestamine
app.Run();
}
Kokkuvõtteks: DIP on disainiprintsiip, DI aga selle rakendamise viis.