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

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

Singleton считается антипаттерном из-за нескольких проблем:

  1. Глобальное состояние – усложняет тестирование, так как состояние сохраняется между тестами.
  2. Нарушение SRP – часто становится "божественным объектом", управляющим слишком многим.
  3. Скрытые зависимости – сложно отследить, где используется синглтон.
  4. Проблемы с многопоточностью – требует аккуратной реализации (double-checked locking, enum-подход).

Пример плохого синглтона:

java
public class BadSingleton {
    private static BadSingleton instance;
    
    private BadSingleton() {}
    
    public static BadSingleton getInstance() {
        if (instance == null) {
            instance = new BadSingleton(); // Проблема в многопоточной среде
        }
        return instance;
    }
}

Лучше использовать DI (например, через Spring или Guice), где зависимости явно объявляются и могут быть легко заменены в тестах.

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

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

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

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