Встречается на собеседованиях • сегодня

Пользуешься ли принципом инверсии зависимостей (Dependency Inversion Principle)

DIP — один из SOLID-принципов, гласящий, что модули верхнего уровня не должны зависеть от модулей нижнего уровня. Оба должны зависеть от абстракций.

Пример без DIP:

java
class MySQLDatabase {
    public void saveData(String data) {
        // сохранение в MySQL
    }
}

class Service {
private MySQLDatabase db = new MySQLDatabase();
void process() {
db.saveData("data");
}
}

text

С DIP:
```java
interface Database {
    void saveData(String data);
}

class MySQLDatabase implements Database {
    @Override
    public void saveData(String data) {
        // сохранение в MySQL
    }
}

class Service {
    private Database db;
    Service(Database db) {
        this.db = db; // инъекция зависимости
    }
    void process() {
        db.saveData("data");
    }
}

Преимущества:

  • Уменьшение связанности кода
  • Легкость тестирования (можно подменить реализацию)
  • Гибкость при изменении БД
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы