За счет чего уменьшается число сущностей? Я не вижу принципиальной разницы.
У меня интерфейс может соответствовать сразу и фабрике и хранилищем конфигов, логгеров и синглтонов... Более того инициализированные синглтоны не будут болтаться в глобальной области, что для GC гуд. И все это добро я могу замокать и сделать тестирование изи...
Скорее всего у меня непонимание православного DI и IoC которое все ж таки тащат за уши из других языков...
Из ключевого и обще-приемлемого я вынес, что в некоторой единой точке сборки должны быть собраны все провайдеры всех используемых сущностей, и раздаваться должны инжекторами, последовательно собирающих провайдерами некоторые выходные сущности...
Ок. Интерфейс с реализацией в отдельном пакете(-ах), некий метод конструктора реализации плюс фабричные методы...