Я думаю, что решение, которое вы описываете как SingletonFactory
, является шаблоном ServiceLocator , а ваши Singletons являются сервисами.
Является ли это решение приемлемым?
Это зависит от , как и , где вы используете Singletons.Синглтоны сами по себе неплохие, если вы изолируете код, который от них зависит.В противном случае вы в конечном итоге будете вводить несколько сложных синглетонов каждый раз, когда вам понадобится тестовое приспособление.
Если вы создаете экземпляры Singletons, а не используете статические методы получения / установки, будет сложнее вводить зависимости без использования DI-фреймворка, если только вы не передадите свои синглеты, но тогда вы можете получить длинный список параметров..
Есть ли лучший / чище / более короткий способ достижения того же эффекта?
Контейнеры IoC и Каркасы DI (различная тонкость) часто используются для управления зависимостями, которые иначе были бы синглетонами.Однако даже если вы устраните зло синглетонов, все же рекомендуется попытаться изолировать области зависимости от конкретных служб.