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:
- Yuqori darajadagi modullar past darajadagi modullarga bog'liq bo'lmasligi kerak. Ikkalasi ham abstraktsiyalarga bog'liq bo'lishi kerak.
- 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.