Встречается на собеседованиях • сегодня
Почему Singleton является антипаттерном
Singleton часто критикуют за несколько причин:
- Глобальное состояние – усложняет тестирование из-за скрытых зависимостей.
- Нарушение SRP – управляет своим жизненным циклом и логикой создания.
- Проблемы с многопоточностью – требует дополнительной синхронизации.
- Жёсткая связь – затрудняет замену реализации (например, для моков в тестах).
Пример проблемного Singleton:
java
public class Singleton {
private static Singleton instance;
private Singleton() {}
public static Singleton getInstance() {
if (instance == null) {
instance = new Singleton(); // Не потокобезопасно!
}
return instance;
}
}Альтернативы:
- Внедрение зависимостей (DI) через конструктор/сеттер.
@Singletonв DI-фреймворках (Guice, Spring), где жизненный цикл управляется контейнером.
Использовать Singleton стоит только когда действительно нужен единственный экземпляр на уровне JVM (например, логгер).

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы