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

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

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

  1. Глобальное состояние – Singleton создаёт глобально доступный объект, что усложняет тестирование и нарушает принцип инкапсуляции.
  2. Трудности с мокированием – Зависимости от Singleton сложно заменять в тестах.
  3. Нарушение SRP – Часто становится "божественным объектом", берущим на себя слишком много обязанностей.
  4. Проблемы с многопоточностью – Ленивая инициализация требует синхронизации, что может привести к deadlock.

Пример плохого Singleton:

java
public class BadSingleton {
    private static BadSingleton instance;
    
    private BadSingleton() {}
    
    public static synchronized BadSingleton getInstance() {
        if (instance == null) {
            instance = new BadSingleton();
        }
        return instance;
    }
}

Альтернативы: Dependency Injection (Spring, Guice) или явная передача зависимостей.

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

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

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

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