Чому Singleton часто називають "антипатерном"?
Singleton часто вважають антипатерном через його побічні ефекти при масштабуванні та тестуванні:
Глобальний стан
Singleton перетворюється на «приховану глобальну змінну». Через це важко відстежити, хто і де змінює стан об'єкта. Це ламає ізоляцію компонентів.
Складнощі з тестуванням
Його важко підмінити моками, оскільки екземпляр фіксований. Під час юніт-тестів доводиться скидати стан вручну або використовувати рефлексію.
Порушення принципу єдиної відповідальності
Клас одночасно вирішує бізнес-задачу і керує своїм життєвим циклом, що ускладнює архітектуру.
Приховані залежності
Код, що використовує Singleton, стає неявно залежним від нього, що погіршує читабельність і повторне використання.
Висновок: Singleton корисний для обмежених задач (наприклад, логерів), але зловживання ним призводить до неявних залежностей, складного тестування і крихкої архітектури.
Коротка відповідь
Для співбесідиКоротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.