Проблема с «одноэлементным шаблоном» на самом деле связана не с самим одноэлементным шаблоном, а с негибким статическим фабричным методом в одноэлементном классе . И я считаю, что даже в книге GoF это считалось примером того, как можно получить доступ к одиночке, а не моделью окончательной реализации.
Многие посты предлагают использовать фабричный класс для создания
единичные случаи, когда зависимости четко показаны. Мне
это просто кажется, как брать несколько синглетонов и комбинировать их
в один заводской синглтон, который будет иметь те же проблемы?
Разница в том, что эта отдельная фабрика становится единственной точкой, в которой вы поддерживаете зависимости.
И на самом деле, общепринятым решением является использование структуры внедрения зависимостей, такой как Spring или Guice , которая в основном представляет собой единую фабрику с очень мощным и гибким механизмом конфигурации, который может сделать гораздо больше, чем просто управлять синглетонами.