Sobes.tech
Intern

Dependency Injection менен Dependency Inversion ортосундагы айырма эмне?

sobes.tech AI

AIден жооп

Мурувватууларды киргизүү (Dependency Injection, DI) жана Мурувватууларды тескери берүү (Dependency Inversion, DIP) программалык камсыздоону долбоорлоонун байланышкан, бирок ар башка түшүнүктөрү.

  • Мурувватууларды тескери берүү принциби (DIP) — SOLID беш принциптин бири. Ал мындай дейт:

    1. Жогорку деңгээлдеги модулдар төмөнкү деңгээлдеги модулдарга көз каранды болбошу керек. Экиси да абстракциялардан көз каранды болушу керек.
    2. Абстракциялар деталдардан көз каранды болбошу керек. Деталдар абстракциялардан көз каранды болушу керек.

    Бул принцип архитектуранын байланышын азайтууга жана ийкемдүүлүгүн жогорулатууга багытталган.

  • Мурувватууларды киргизүү (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 — анын ишке ашыруу ыкмасы.