Intern
Dependency Injection və Dependency Inversion arasındakı fərq nədir?
sobes.tech Süni İntellekt
AI-dan cavab
Asılılıq İnkişafı (Dependency Injection, DI) və Asılılıq İnversiyası (Dependency Inversion, DIP) proqram təminatı dizayn sahəsində əlaqəli, lakin fərqli anlayışlardır.
-
Asılılıq İnversiyası Prinsipi (DIP) — SOLID prinsiplərindən biridir. Bu prinsip deyir ki:
- Yuxarı səviyyəli modullar aşağı səviyyəli modullara bağlı olmamalıdır. Hər ikisi abstraksiyalara bağlı olmalıdır.
- Abstraksiyalar detallara bağlı olmamalıdır. Detallar abstraksiyalara bağlı olmalıdır.
Bu prinsip arxitekturanın əlaqəliliyini azaltmağa və çevikliyini artırmağa yönəlib.
-
Asılılıq İnkişafı (DI) — asılılıqları inversiya etmək üçün istifadə olunan nümunə (metod). DI o deməkdir ki, obyektin asılılıqları xaricdən (məsələn, konstruktor, setter və ya interfeys vasitəsilə) ona ötürülür, və obyekt daxilində yaradılmır.
C++-da DI nümunəsi:
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("Tətbiq başladı");
}
};
int main() {
ConsoleLogger logger;
Application app(logger); // asılılıq injeksiyası
app.Run();
}
Qısaca: DIP — dizayn prinsipi, və DI — onun həyata keçirilmə üsuludur.