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

Python Middle Без компании
Почему singleton называют антипаттерном
Ответы
Singleton считается антипаттерном по нескольким причинам: - **Глобальное состояние** — Singleton создаёт глобально доступный объект, что усложняет тестирование и делает код менее предсказуемым, так как его состояние может изменяться в любом месте программы. - **Нарушение SRP** — Singleton часто берёт на себя слишком много обязанностей, нарушая принцип единственной ответственности. - **Сложность мокирования** — В тестах сложно подменить Singleton на mock-объект, так как он жёстко зашит в код. - **Проблемы с многопоточностью** — Безопасная реализация Singleton в многопоточной среде требует дополнительных усилий (например, через `__new__` или декораторы). Пример "плохого" Singleton: ``` class Singleton: _instance = None def __new__(cls): if cls._instance is None: cls._instance = super().__new__(cls) return cls._instance ``` Лучше использовать dependency injection или фабрики для управления жизненным циклом объектов.