Вы должны пойти другим путем.К тому времени, когда клиентский код вызывает .build
на заводском объекте, все должно быть готово, поэтому .build
редко принимает какие-либо параметры, и, если это так, обычно они служат вспомогательными: журналирование, какие-то помощники времени отладки, что угодно,Это не значит, что вы должны оставить свой .build
без параметров.
Так что вопрос в том, как добраться до без параметров .build
, верно?Ну, или AbstractFactory
шаблон - фабрика фабрик, или «фабрика более высокого порядка», если это имеет больше смысла для вас.Это может занять реализации.Обычно для больших и довольно сложных проектов требуется какой-то ServiceLocator
- в основном, DI-контейнер.Он может быть глобальным и «знать» все существующие службы (хотя я не буду рекомендовать его), или он может быть более точным (например, для всего модуля или для пространства имен - в зависимости от обстоятельств).Другие варианты - это просто старая карри - концепция от функционального программирования, которая может быть относительно легко адаптирована (конечно, как только вы ее получите) к вашему коду;по сути, он делает то, что AbstractFactory
делает, минуя многословие.