Sobes.tech
Junior — Middle
151

Бағдарламалық қамтамасыз етуді әзірлеуде бақылаудың инверсиясы мен тәуелділіктерді енгізудің айырмашылықтарын түсіндіріңіз.

AI-дан жауап

sobes.tech AI

Басқаруды кері айналдыру (Inversion of Control, IoC) — бұл объектілерді құру мен байланыстыруды сыртқы контейнерге немесе фреймворкке беру принципі, ол объектілердің өздері емес. Бұл компоненттердің байланысын азайтып, икемділігін арттырады.

Тәуелділіктерді енгізу (Dependency Injection, DI) — IoC-тің нақты жүзеге асуы, ол объектінің тәуелділіктерін сырттан (мысалы, конструктор, сеттерлер немесе интерфейстер арқылы) беру, ал ішінен емес.

Қысқаша айтқанда:

  • IoC — басқару бағытын өзгертетін жалпы принцип.
  • DI — IoC-ті жүзеге асырудың тәсілі, объектілерге олардың тәуелділіктерін сырттан беру арқылы.

Java-да DI-мен конструктор арқылы мысал:

class Engine {
    void start() { /* ... */ }
}

class Car {
    private Engine engine;

    // Тәуелділікті конструктор арқылы енгізу
    public Car(Engine engine) {
        this.engine = engine;
    }

    void drive() {
        engine.start();
        // ...
    }
}

// Сыртқы код тәуелділіктерді құрып, береді
Engine engine = new Engine();
Car car = new Car(engine);

Мұнда Car Engine-ді өздігінен жасамайды, оны сырттан алады, бұл тестілеуді және өзгерістерді жеңілдетеді.