Sobes.tech
Intern

Dependency Injection va Dependency Inversion o'rtasidagi farq nima?

sobes.tech AI

AIdan javob

Dependency Injection (DI) va Dependency Inversion (DIP) tushunchalari, dasturiy ta'minot dizayni sohasida bog'liq, ammo turli tushunchalar.

  • Dependency Inversion Principle (DIP) — SOLID prinsiplardan biri. U quyidagicha deydi:

    1. Yuqori darajadagi modullar past darajadagi modullarga bog'liq bo'lmasligi kerak. Ikkalasi ham abstraktsiyalarga bog'liq bo'lishi kerak.
    2. Abstraktsiyalar detallarga bog'liq bo'lmasligi kerak. Detallar abstraktsiyalarga bog'liq bo'lishi kerak.

    Bu prinsip, arxitekturaning bog'liqligini kamaytirish va moslashuvchanligini oshirishga qaratilgan.

  • Dependency Injection (DI) — bu bog'liqliklarni in'ektsiya qilish uchun ishlatiladigan naqsh (yoki usul). DI shuni anglatadiki, ob'ektning bog'liqliklari tashqaridan (masalan, konstruktor, setter yoki interfeys orqali) uzatiladi, va ichki ichida yaratilmaydi.

C++ da DI misoli:

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("Ilova ishga tushdi");
    }
};

int main() {
    ConsoleLogger logger;
    Application app(logger); // bog'liqlikni in'ektsiya qilish
    app.Run();
}

Xulosa qilib aytganda: DIP — bu dizayn prinsipi, va DI — uni amalga oshirish usuli.