Intern
Ի՞նչ է Dependency Injection-ը և Dependency Inversion-ը տարբերությունը։
sobes.tech AI
Պատասխան AI-ից
Անհրաժեշտության ներմուծում (Dependency Injection, DI) և Անհրաժեշտության հակադրություն (Dependency Inversion, DIP) հասկացությունները կապված են, բայց տարբեր են ծրագրային ապահովման նախագծման ոլորտում:
-
Անհրաժեշտության հակադրության սկզբունք (DIP) — SOLID հինգ սկզբունքներից մեկը։ Այն ասում է, որ.
- Բարձր մակարդակի մոդուլները չպետք է կախված լինեն ցածր մակարդակի մոդուլներից։ Երկուսն էլ պետք է կախված լինեն աբստրակցիաներից։
- Աբստրակցիաները չպետք է կախված լինեն մանրամասներից։ Մանրամասները պետք է կախված լինեն աբստրակցիաներից։
Այս սկզբունքը նպատակ ունի նվազեցնել կապակցվածությունը և բարձրացնել ճկունությունը։
-
Անհրաժեշտության ներմուծում (DI) — դա օրինակ (մոդել) է, որը իրականացնում է հակադրության սկզբունքը։ DI նշանակում է, որ օբյեկտի կախվածությունները փոխանցվում են նրաց դուրս (օրինակ՝ կոնստրուկտորով, սեթթերով կամ ինտերֆեյսով), և չեն ստեղծվում ներսում։
C++-ում DI-ի օրինակ:
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("Հայտը սկսվեց");
}
};
int main() {
ConsoleLogger logger;
Application app(logger); // կախվածության ներմուծում
app.Run();
}
Ամփոփում՝ DIP-ը նախագծման սկզբունք է, իսկ DI-ն դրա իրականացման միջոցն է։