Шаблон проектирования Singleton расходится с DI. В то время как возможно открыть Синглтон настолько, что DI и Открытый / Закрытый Принцип начинают иметь смысл, это изменит Синглтон настолько, что он почти перестает быть Синглтоном.
Безопасность потоков - одна большая проблема, которая приходит на ум, когда вы начинаете открывать синглтон.
Гораздо лучше просто определить свои сервисы и классы, не рассматривая их слишком много. Если у вас есть объект, которым вы хотели бы поделиться между несколькими потребителями, большинство DI-контейнеров имеют концепцию Singleton срок службы , которая имитирует преимущества шаблона проектирования Singleton без каких-либо недостатков
Вкратце: синглтоны - это зло, и их следует избегать.
Абстрактная фабрика , с другой стороны, очень полезен для целей DI.