Отдохнем немного от многопоточности.
В проектах начинающих разработчиков часто встречаю синглтоны. Есть много споров антипаттер ли одиночка или нет. Юзать его — ваша ответственность. Критично же юзать и не знать какие риски на себя берешь. Поэтому вкратце:
1. Синглтон нарушает SRP (Single Responsibility Principle) — класс синглтона, помимо того чтобы выполнять свои непосредственные обязанности, занимается еще и контролированием количества своих экземпляров.
2. Глобальное состояние. Про вред глобальных переменных вроде бы уже все знают, но тут та же самая проблема. Когда мы получаем доступ к экземпляру класса, мы не знаем текущее состояние этого класса, и кто и когда его менял, и это состояние может быть вовсе не таким, как ожидается.
3. Проблема тестирования. Вы не можете имитировать (mock away) синглтон при тестировании компонентов, использующих его. Это делает почти невозможным корректное модульное тестирование, потому что вы не добьётесь полной изоляции тестируемого кода.
есть неплохая статья, которая описывает все риски использования синглотона и его альтернативы
В проектах начинающих разработчиков часто встречаю синглтоны. Есть много споров антипаттер ли одиночка или нет. Юзать его — ваша ответственность. Критично же юзать и не знать какие риски на себя берешь. Поэтому вкратце:
1. Синглтон нарушает SRP (Single Responsibility Principle) — класс синглтона, помимо того чтобы выполнять свои непосредственные обязанности, занимается еще и контролированием количества своих экземпляров.
2. Глобальное состояние. Про вред глобальных переменных вроде бы уже все знают, но тут та же самая проблема. Когда мы получаем доступ к экземпляру класса, мы не знаем текущее состояние этого класса, и кто и когда его менял, и это состояние может быть вовсе не таким, как ожидается.
3. Проблема тестирования. Вы не можете имитировать (mock away) синглтон при тестировании компонентов, использующих его. Это делает почти невозможным корректное модульное тестирование, потому что вы не добьётесь полной изоляции тестируемого кода.
есть неплохая статья, которая описывает все риски использования синглотона и его альтернативы