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

Почему singleton называют антипаттерном

Singleton часто называют антипаттерном из-за проблем, которые он может создать:

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

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

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

Лучше использовать DI или фабрики вместо Singleton там, где это возможно.

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

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

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

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