5. D — Dependency Inversion Principle (Принцип инверсии зависимостей)

5. D — Dependency Inversion Principle (Принцип инверсии зависимостей)

Модули верхнего уровня не должны зависеть от модулей нижнего уровня.
Оба типа модулей должны зависеть от абстракций.

  • Вместо жёстких зависимостей от конкретных классов — зависим от интерфейсов.

  • Это облегчает тестирование, замену реализаций и расширение системы.

//  Нарушение — напрямую зависит от конкретного класса
class Keyboard {}
class Computer {
    private Keyboard keyboard = new Keyboard();
}

//  Правильно — зависимость от абстракции
interface InputDevice { void input(); }

class Keyboard implements InputDevice {
    public void input() { System.out.println("Набор текста"); }
}

class Computer {
    private final InputDevice device;

    public Computer(InputDevice device) {
        this.device = device;
    }
}

Автор: к.п.н., Румянцев Сергей Александрович, доцент Финансового университета при Правительстве РФ; доцент ОЧУВО Международного инновационного университета; Консалтинг, управление разработкой ПО; системный и бизнес анализ; менеджмент; аналитиз данных; управление ИТ. Телефон для связи +79269444818 (мессенджеры)   Короткая ссылка:

5. D — Dependency Inversion Principle (Принцип инверсии зависимостей)

Модули верхнего уровня не должны зависеть от модулей нижнего уровня.
Оба типа модулей должны зависеть от абстракций.

  • Вместо жёстких зависимостей от конкретных классов — зависим от интерфейсов.

  • Это облегчает тестирование, замену реализаций и расширение системы.

//  Нарушение — напрямую зависит от конкретного класса
class Keyboard {}
class Computer {
    private Keyboard keyboard = new Keyboard();
}

//  Правильно — зависимость от абстракции
interface InputDevice { void input(); }

class Keyboard implements InputDevice {
    public void input() { System.out.println("Набор текста"); }
}

class Computer {
    private final InputDevice device;

    public Computer(InputDevice device) {
        this.device = device;
    }
}

https://webprogr.ru/~9FPWP
Короткая ссылка на новость:https://webprogr.ru/~9FPWP


// Пример кода
function hello(name) {
  console.log(`Hi, ${name}!`);
}
hello("Sergey");

Последние новости

Рейтинг@Mail.ru