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

Какой знаешь нерекомендуемый способ внедрения зависимости

Использование Service Locator считается антипаттерном, так как скрывает зависимости и усложняет тестирование. Вместо явного внедрения через конструктор/метод, класс запрашивает зависимости из глобального контейнера, что нарушает принцип инверсии управления (IoC).

java
// Плохой пример: Service Locator
public class OrderService {
    private PaymentProcessor getPaymentProcessor() {
        return ServiceLocator.getService(PaymentProcessor.class);
    }
}

Проблемы:

  1. Неявные зависимости (не видно в сигнатуре класса).
  2. Сложность мокирования в тестах.
  3. Зависимость от глобального состояния.

Лучше использовать DI через конструктор:

java
// Рекомендуемый способ
public class OrderService {
    private final PaymentProcessor processor;
    
    public OrderService(PaymentProcessor processor) {
        this.processor = processor;
    }
}
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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