Синглтон - это фактически глобальное состояние. Если вы собираетесь создать множество синглетонов, вы создадите множество глобальных состояний, но только не обязательно будет выглядеть как глобальное состояние.
Это затрудняет выполнение таких вещей, как сборка модульных тестов, создание фиктивных классов и повторное использование кода, поскольку его действительно легко
связать текущее состояние с функцией. то есть функция foo
действует только тогда, когда class X
находится в state Z
, в противном случае она не работает.
Также проблематично правильно построить потокобезопасный синглтон.
Одиночные устройства могут быть полезны для координации доступа к ресурсу, особенно к тому, который не имеет большого состояния и является дорогостоящим для создания.
Так почему вы думаете, что вам нужно лотов синглетонов? Вы можете получить лучшие ответы, если спросите о проблемной области и о проблеме, с которой вы столкнулись.