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 — მისი განხორციელების მეთოდი.