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

Почему рукописный Singleton считается антипаттерном

Рукописный Singleton часто считается антипаттерном из-за проблем с тестированием, нарушением принципа единственной ответственности и сложностью управления зависимостями.

Основные проблемы:

  1. Тестирование – Singleton усложняет модульное тестирование из-за глобального состояния.
  2. Гибкость – Замена реализации требует изменения кода, а не конфигурации.
  3. Многопоточность – Наивная реализация не потокобезопасна.

Пример проблемной реализации:

java
public class Singleton {
    private static Singleton instance;
    
    private Singleton() {}
    
    public static Singleton getInstance() {
        if (instance == null) {
            instance = new Singleton(); // Не потокобезопасно!
        }
        return instance;
    }
}

Альтернативы:

  • Использовать DI-фреймворки (Spring, Guice).
  • Если нужен Singleton, предпочитать enum или синхронизированные методы.

Вывод: Лучше делегировать управление жизненным циклом объектов DI-контейнерам.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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