Comments 6
Довольно сложное и магическое решение для тривиальной вобщем-то фабрики, хотя и по канонам guice, но можно ли назвать такое решение хорошим, понятным, расширяемым?
Использование хэштаблицы с фабриками требует обертки для обработки ошибок, если условие создания воркеров вдруг поменяется (станет сложнее), то врядли биндер решит уже проблему и тогда придется придумывать уже что-то другое и наверное еще более сложное.
В этом случае, я бы наверное стал использовать инжектор напрямую и явно написал бы фабрику, убрал бы дополнительный параметр из конструктора воркеров и заворачивал бы полученный из инжектора воркер в декоратор который вызывал бы внутри doWork(i).
Действительно, если поменяется логика создания воркеров, то нужно будет находить подход.
В целом, то, что я здесь описал — это реальный случай из жизни, просто сильно упрощенный. И именно написанный в статье подход для решения проблемы оказался оптимальным, потому что Воркеры создаются именно так и логика не поменяется.
Целью статьи было показать, что есть такие расширения, и что их можно использовать вместе. А то, что пример для их использования несколько «притянут за уши» — как по мне, это уже второстепенно
Ну вот вы как раз тот человек, который не усложняет себе жизнь, что бы потом подобными постами оправдовать свой выбор :)
Поддерживаю!
Guice всемогущий: assistedinject, multibindings, generics