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

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

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

  1. Глобальное состояние — Singleton создаёт глобально доступный объект, что усложняет тестирование и делает код менее предсказуемым, так как его состояние может изменяться в любом месте программы.

  2. Нарушение SRP — Singleton часто берёт на себя слишком много обязанностей, нарушая принцип единственной ответственности.

  1. Сложность мокирования — В тестах сложно подменить Singleton на mock-объект, так как он жёстко зашит в код.

  2. Проблемы с многопоточностью — Безопасная реализация Singleton в многопоточной среде требует дополнительных усилий (например, через __new__ или декораторы).

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

python
class Singleton:
    _instance = None

    def __new__(cls):
        if cls._instance is None:
            cls._instance = super().__new__(cls)
        return cls._instance

Лучше использовать dependency injection или фабрики для управления жизненным циклом объектов.

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

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

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

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