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

Какие плюсы и минусы использования конструктора для внедрения зависимости

Плюсы:

  • Явная зависимость: все зависимости видны в конструкторе, что делает код прозрачным.
  • Неизменяемость: после создания объекта зависимости нельзя изменить (final поля).
  • Легкость тестирования: зависимости легко подменить моками в unit-тестах.
  • Однозначность: исключает циклические зависимости, так как они обнаруживаются при создании объекта.

Минусы:

  • Большое количество параметров: если зависимостей много, конструктор становится громоздким (антипаттерн "Труба").
  • Сложность в legacy-коде: трудно внедрить в старый код, где зависимости создаются внутри класса.

Пример:

java
class UserService {
    private final UserRepository userRepo;
    private final EmailService emailService;

    public UserService(UserRepository userRepo, EmailService emailService) {
        this.userRepo = userRepo;
        this.emailService = emailService;
    }
}
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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